jjzjj

include_once

全部标签

c++ - "#pragma once"是否有可能导致错误?

我所有的头文件都使用includeguards以及pragmaonce:#pragmaonce#ifndefFILE_NAME_H#defineFILE_NAME_Hclassfoo{//foointerface..};#endif/*FILE_NAME_H*/我知道pragmaonce不是标准的,并且在编译器之间可能不一样,但它是否有可能导致错误?以某种方式先测试它是否可用会更好吗?#ifdefTHIS_COMPILER_SUPPORTS_PRAGMA_ONCE#pragmaonce#endif#ifndefFILE_NAME_H#defineFILE_NAME_Hclassfoo{

c++ - include "file.h"vs <file> 有什么区别?

我在VisualStudio2010中工作。我在ProjectProperties->Linker->General->AdditionalDirectories添加了一个目录如果我使用项目编译"file.h"但如果我使用则不会 最佳答案 您可能假设隐式添加.h到文件名的末尾。这不是真的。你是否使用或""对文件名没有意义。它基本上告诉实现应该以何种顺序遍历包含目录以查找头文件。引用标准:Apreprocessingdirectiveoftheform#includenew-linesearchesasequenceofimpleme

c++ - 使用#pragma once 有什么危险?

这个问题在这里已经有了答案:Is#pragmaonceasafeincludeguard?(15个答案)关闭5年前。现代C和C++编译器支持非标准的#pragmaonce预处理器指令,其目的与经典的头文件保护类似:#ifndefhopefully_unique_identifier_that_doesnt_hurt_the_code#definehopefully_unique_identifier_that_doesnt_hurt_the_code//somecodehere#endif一个问题,我知道,经典的方法是,一旦你包含了一个标题,你必须#undef标题保护宏来再次包含它(这

c++ - 如何让 g++ 列出所有 #included 文件的路径

我想让g++/gcc告诉我所有非系统的路径,它是C++构建中的#include-ing。事实证明,这是一项艰难的搜索,因为Google必须以十种不同的方式解释它。我需要这些文件名和路径,以便将它们添加到ExuberantCTAGS的搜索路径中。我们有一个巨大的项目,如果我在整个项目上使用ctags,生成标签文件大约需要半个小时,编辑器进行查找的时间也差不多一样长。我们使用CMakeLisats进行编译。如果有一个指令我可以粘贴到CMakeLists.txt中,那将是额外的美妙。我真的不需要默认路径和文件名,JohnathanWakely提供了一个很好的工具here.我认为这几乎涵盖了这

c++:是否可以在函数体内#include?

我只想在调用某个函数体时包含一个头文件?这在C++中可行或推荐吗? 最佳答案 没有。你有点误会了;#include根本不在运行时处理。不可能根据程序的执行特征#include文件;一旦程序执行,它的源代码就被修复了(因为它已经编译过了)。 关于c++:是否可以在函数体内#include?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/2499674/

c++ - 在 C++ 中,当我需要使用枚举时,如何避免#include 头文件?

在我的C++头文件中,我尝试使用前向声明(classMyClass;)而不是#including类头,正如许多C++编码标准(谷歌C++风格指南就是其中之一)所推荐的那样。不幸的是,当我引入枚举时,我不能再做前向声明了。像这样:////myclass1.hpp////classMyClass1{enumMyEnum1{Enum_A,Enum_B,Enum_C};};////myclass2.hpp//////Iwanttoavoidthis#include"myclass1.hpp"//I'dprefertodothis(forwarddeclaration)classMyClass1

c++ - #include inside 函数体不起作用 (CDT/Eclipse C++)

此问题涉及在Eclipse4.2.2(Juno)中使用CDT8.1.2管理的C++项目。下面的代码片段可以编译,但在Eclipse中会显示为有错误。我有一个名为foo.h的文件,内容如下:inta=42;此文件包含在另一个文件foo.cpp中:#includeintmain(){#include"foo.h"printf("%d",a);return0;}如何修复“符号‘a’无法解析”?据我了解,main()函数内的#include语句应该触发单纯的复制粘贴操作在预处理器中。CDT似乎已正确索引该文件,因为我可以按住CTRL键并单击文件名“foo.h”,然后在IDE中打开该文件。有趣的

c++ - 如何在#include 指令中使用宏?

我对如何在#include指令中使用宏感到困惑。我已经这样做了:#include"../../../../GlobalDefintions.h"#include"../../../../lib/libc++/"ARCH_FAMILY_S"/"ARCH_S"/stkl/printkc/printkc.h"GlobalDefintions.h:#ifndef_GlobalDefintions_#define_GlobalDefintions_/*ArchitectureInformationStart*/#defineARCHi386#defineARCH_FAMILYx86#define

c++ - 错误 C1083 : Cannot open include file: 'FL/Fl.h' : No such file or directory

首先,我在这里还是新手,因此不知道如何格式化代码以使其在这个问题中看起来很整洁,我希望这是可以接受的。我遵循Stroustrup的编程原则和实践。您可能猜到问题是什么……是的FLTK安装。我已仔细按照所有步骤在VSC++2013中构建项目;第1204-1206页。(我已经成功地完成了附录C,与std_lib_facilities.h有关)。我正在尝试构建以下win32项目,如书中所示:#include#include#includeintmain(){Fl_Windowwindow(200,200,"Windowtitle");Fl_Boxbox(0,0,200,200,"Hey,Im

c++ - 如何在 constexpr 构造函数中初始化矩阵 ONCE?

我有以下矩阵类:templateclassmatrix{floatdata[Rows][Cols];public:constexprmatrix(constfloat(&input)[Rows][Cols]):data{}{for(size_ti=0;i用法:constexprautom=matrix({{4.3f,5.0f,1.2f},{8.0f,1.9f,6.5f},{9.1f,2.2f,3.7f},});Thiscompiles(在C++20中)并且工作正常,但它需要初始化data两次。第一个data{}是必需的,因为所有内容都必须在constexpr构造函数中进行成员初始化,第