草庐IT

include-guards

全部标签

c++ - C++ 中何时需要#include <new> 库?

根据thisreference对于operatornew:Globaldynamicstorageoperatorfunctionsarespecialinthestandardlibrary:Allthreeversionsofoperatornewaredeclaredintheglobalnamespace,notinthestdnamespace.ThefirstandsecondversionsareimplicitlydeclaredineverytranslationunitofaC++program:Theheaderdoesnotneedtobeincludedfor

c++ - 什么时候可以在#include 指令中省略文件扩展名?

我在玩gmock并注意到它包含这一行:#include我会期待tuple.h。什么时候可以排除扩展,它是否赋予指令不同的含义? 最佳答案 C++标准头文件没有“.h”后缀。我相信原因是该标准会破坏许多不同的标准前实现。因此,标准委员会没有要求供应商将其现有的“iostream.h”(例如)header更改为符合标准(这将破坏其现有用户的代码),而是决定他们将删除后缀(我相信不会那么现有的实现已经完成)。这样,现有的非标准程序将继续使用供应商的非标准库工作。当用户想让他们的程序符合标准时,他们将采取的步骤之一是更改“#include”

c++ - 如何使用 include-what-you-use 工具与 CMake 一起检测未使用的 header ?

工具include-what-you-use可用于检测不需要的header。我正在使用CMake对于我的C++软件项目。如何指示CMake在我的软件项目的源文件中自动运行include-what-you-use? 最佳答案 CMake3.3引入了新的目标属性CXX_INCLUDE_WHAT_YOU_USE可以设置为程序的路径include-what-you-use.例如这个CMakeLists.txtcmake_minimum_required(VERSION3.3FATAL_ERROR)add_executable(helloma

c++ - Visual Studio 代码,#include <stdio.h> 说 "Add include path to settings"

我正在尝试在VisualStudioCode中构建C/C++。我安装了C/C++和所有相关的扩展。#includeintmain(){printf("TestCnow\n");return0;}但是#include下面有一条绿线说“将包含路径添加到设置”。当我点击它时,它会移动到“c_cpp_properties.json”。如何以及在哪里可以在下面的配置中添加包含路径?"configurations":[{"name":"Mac","includePath":["/usr/include"]}] 最佳答案 更当前的情况。在2018

c++ - 在头文件与源文件中包含 #includes

我喜欢把我所有的#includes放在我的头文件中,然后只在我的源文件中包含我的源文件的头文件。什么是行业标准?我的方法有什么缺点吗? 最佳答案 通常,您只想将最少的必要包含放入类头文件中,因为使用该头文件的任何其他人都将被迫#include他们所有人也是。在较大的项目中,这会导致构建速度变慢、依赖性问题和各种其他问题。将头文件视为类的公共(public)接口(interface)。你不想让使用它的每个人都背负额外的依赖,除非他们是必需能够使用该类。将仅在类实现中需要的任何内容下移到源文件中。对于标题中使用的其他类,只有#inclu

c++ - boost::unique_lock 与 boost::lock_guard

我不太了解这两个锁类之间的区别。在boost文档中说,boost::unique_lock不会自动实现锁定。这是否意味着unique_lock和lock_guard的主要区别在于unique_lock我们必须显式调用lock()功能? 最佳答案 首先回答您的问题。不,您不需要在unique_lock上调用lock。见下文:unique_lock只是一个具有更多功能的锁类。在大多数情况下,lock_guard会做你想做的,并且足够了。unique_lock为您提供更多功能。例如,如果您需要超时或者如果您想将锁定推迟到对象构造之后的某个

ruby-on-rails - Rails 中 to_json 的默认值为 :include

假设我有一个属于用户的模型帖子。要转换为json,我会这样做@reply.to_json(:include=>{:user=>{:only=>[:email,:id]},:only=>[:title,:id])但是,我想为此设置一些默认值,因此我不必每次都指定:only。我正在尝试覆盖as_json来完成此操作。当我在用户模型中添加as_json时,当我执行@user.to_json时会调用它,但当用户包含在@reply.to_json中时,我为用户覆盖的as_json将被忽略。我该如何进行这项工作?谢谢 最佳答案 您可以通过覆盖模

ruby-on-rails-3 - gem install json -v 1.7.3 给出 'Please update your PATH to include build tools'

当我运行时:railsnewblog我明白了:Installingjson(1.7.3)Gem::InstallError:The'json'nativegemrequiresinstalledbuildtools.PleaseupdateyourPATHtoincludebuildtoolsordownloadtheDevKitfrom'http://rubyinstaller.org/downloads'andfollowtheinstructionsat'http://github.com/oneclick/rubyinstaller/wiki/Development-Kit'A

java - Maven : How to include jars, 在代表 J2EE 项目中不可用?

在我的J2EE项目中,我有几个依赖项,它们在任何Maven存储库中都不可用,因为它们是专有库。这些库需要在运行时可用,因此必须复制到target/.../WEB-INF/lib...现在,我在我的POM中将它们列为系统依赖项,但使用这种方法的问题是,在编译期间它们没有被复制到目标构建中。而且这种方法也不是很优雅。那么在Maven中集成它们的最佳方式是什么?注意:我不想创建自己的Maven存储库。 最佳答案 对于希望快速解决此问题的人:LIB_NAMELIB_NAME1.0.0system${basedir}/WebContent/W

c++ - CMake:当我尝试添加源目录本身或其子目录之一时,target_include_directories() 会打印错误

我正在编写一个C++库(仅header)并使用CMake生成我的(VisualStudio)项目和解决方案文件。我还在编写一个测试套件,它是同一个CMake项目的一部分。当我在代表我的仅header库的目标上调用target_include_directories()时会出现我的问题,以便我的库的使用者可以找到它的头文件。我收到以下错误消息(即使生成未中止)。CMakeErrorinCMakeLists.txt:Target"Fonts"INTERFACE_INCLUDE_DIRECTORIESpropertycontainspath:"D:/Projects/GPC/fonts/in