header-files相关内容

如何看待包含文件的预处理后的实际顺序?

我有一个.cpp文件,其中包含一些头文件。这些头文件也可以包括其它头文件。包含警卫是为了防止包含相同的文件两次。 知道每个文件只包括一次。有没有办法找出所有标头将被包括在内的最终顺序? 我试过 gcc -E 获得预处理器输出,但生成的代码似乎不可用于提取我想要的信息。 编辑 我要求的原因是因为我需要包含我的标题 更新 感谢您的答案。使用 cpp -H 似乎非常有 ..
发布时间:2016-10-17 11:17:53 C/C++开发

如何在IDE中有CMake显示标题,不是任何二进制目标的一部分?

在我们的工作流程中,我们可以有一个由多个头文件组成的模块A ,模块A 不生成任何二进制文件通过其他模块,包括来自模块A 的一些头文件来生成二进制文件)。 一个很好的例子是一个只有头文件的库,由于 INTERFACE 库的概念,CMake 3引入了良好的支持(参见此SO回答和CMake的文档 我们可以从模块A 中创建一个接口库目标: add_library(module_A IN ..
发布时间:2016-10-17 09:34:38 C/C++开发

C ++头文件如何包含实现?

好吧,不是任何方式的C / C ++专家,但我认为头文件的要点是声明函数,然后C / CPP文件定义实现。 但是,今天查看一些C ++代码,我发现这是在一个类的头文件... public: UInt32 GetNumberChannels()const {return _numberChannels; } // ..
发布时间:2016-10-16 14:27:27 C/C++开发

在什么情况下,我们需要包含< cassert> ;?

在什么情况下,我们应该包括 cassert ? 解决方案 它;使用 。 C ++ 11删除了“ ..“头没有污染全局命名空间。 这从来不是一个实际的保证,现在甚至不是一个正式的保证。 因此,使用C ++ 11,在使用“c ....”标题变体时不再有任何可想到的优点,而有明显和明显的缺点,即代码与一个编译器和版本的编译器,可能无法编译与另一个编译器或版 ..
发布时间:2016-10-16 14:25:39 C/C++开发

C / C ++头和实现文件:它们如何工作?

这可能是一个愚蠢的问题,但我已经在这里和网络上搜索了一段时间,无法找到一个明确的答案(我的尽职调查)。 所以我刚开始编程...我的问题是,main函数如何知道不同文件中的函数定义(实现)? ex。说我有3个文件 main.cpp myfunction.cpp myfunction.hpp // main.cpp #include“myfunction.hpp” ..

头文件包含/转发声明

在我的C ++项目中,我必须使用包含( #include“myclass.h”)的头文件吗?当我必须使用类的前向声明( class CMyClass; )? 解决方案 作为规则,首先尝试前向声明。这将减少编译时间等。如果那不编译去 #include 。如果您需要执行以下任何操作,则必须执行#include: 访问类的成员或函数。 / li> 使用指针运算。 使用sizeof。 ..
发布时间:2016-10-14 23:29:26 C/C++开发

C ++不将名称命名为类型

这可能是一个容易的问题,但我不知道为什么编译器它给我这个错误。我有两个类。代理和环境。当我尝试添加一个类型的代理在我的环境类中的对象我得到代理不命名为类型错误。我在我的Environment.h类中包括Agent.h #ifndef AGENT_H_INCLUDED #define AGENT_H_INCLUDED #include #include ..
发布时间:2016-10-14 22:21:54 C/C++开发

如何在本地头只运行预处理器?

我希望预处理器读入包含的本地头文件,但忽略系统头文件的包含。换句话说,如何让预处理器跳过以下形式的预处理指令: #include new-line ,但仍会处理以下格式的指令: #include“q-char-sequence”new-line 作为代码示例,请观察以下文件: #incl ..
发布时间:2016-10-14 20:18:46 C/C++开发

什么时候可以接受标题类库?

就我个人而言,我非常喜欢纯头文件库,但有些声称他们因为内联过多而导致代码膨胀(以及编译时间较长的其他明显问题)。 我想知道,这些说法有多少事实(有关膨胀的说法)? 此外,成本是否合理? (显然有一些不可避免的情况,例如当它是一个完全或大部分使用模板实现的库,但我更感兴趣的情况下,实际上有一个选择。) 我知道有没有硬性和快速的规则,指南等,就这样的东西,但我只是想了解别人对这个问题 ..
发布时间:2016-10-14 12:07:48 C/C++开发

开源工具可视化C / C ++头文件依赖关系?

我要找的是一个工具,给定一个根源文件,输出一个文件依赖关系的图形(带一些自定义,当然,像--maxdepth等) 解决方案 对于不耐烦,谁,像我一样,只是想要一个命令列表,而不是RTFM :)所以不用进一步(假设你有Debian,它的ilk)... 首先,安装Doxygen和Graphviz(它为绘制有向图提供了“点”): apt-get install doxygen gr ..
发布时间:2016-10-14 11:46:34 服务器开发

标题守卫似乎不工作?

我已经在单独的头中声明了一些常量变量(即 constant.h )。 debug.cpp 以访问该变量。 我包括 constant.h ,调试。 当我编译时,显示的错误在我 main.cpp c> ** multiple definition ** of ** IF_DEBUG_ENABLED ** 。 请告诉我实际上我做错了什么。此外,请注意,这是我第一次使用第一个c / ..
发布时间:2016-10-14 11:29:51 C/C++开发

“多重定义”当使用(mock)头文件的模板

我知道C ++模板函数的定义必须放在头文件中。然而,为了提高(潜在)大库的可读性和结构的原因,我将声明从实现分离为“mock”头(其中 #include 实施文件,非常类似于文件的此结构)。 请注意,我知道在编译时必须包含模板函数的实现。 简而言之,当我将非模板函数声明添加到实现文件时,我有一个“多重定义”错误。详细说明如下。 当“mock”标题+实现文件对只包含模板函数的声明/ ,一 ..
发布时间:2016-10-14 11:28:56 C/C++开发

在头文件或源文件中包括stdafx.h?

我有一个名为stdafx.h的头文件,这个是预编译的。 我读过,我应该将这些文件包含在我的.cpp文件中,但是在头文件中已经包含了这些语句。 我应该添加stdafx到我的标题或我的cpp? 例如: stdafx包含freeglut。 我的类头文件具有GLenum的属性。 我应该包括stdafx stdafx.h 。 应该是您项目中每个cpp文件中的第一个includ ..

使用cmake处理头文件依赖项

我在一个小C ++项目上使用CMake,到目前为止它工作得很好...有一个扭曲:x 当我更改头文件时,需要重新编译多个源文件(包括直接或间接的源文件),但是似乎cmake只检测到要重新编译的源文件中的一些,导致一个损坏的状态。我可以通过擦除项目和从头重建来解决这个问题,但是这绕过了使用make实用程序的目标:只重新编译需要的东西。 因此,我假设我做错了。 我的项目非常简单: ..
发布时间:2016-10-14 10:15:07 C/C++开发

在头文件VS实现(.cpp)文件中定义构造函数

您好,感谢您的阅读。 这可能只是在“个人偏好”类别下,但无论如何我们去... 我可以定义一个类构造函数的主体类 .h 文件或实现文件 .cpp 中。这两种风格可能是相同的,只要编译器在一个特定的项目(项目对我意味着 dll )。 同样适用于任何成员函数:它们可以在头文件中定义,或者只是在那里声明,然后在cpp文件中定义。 HOWEVER ... 我发现如果我需要包含这样的类头 ..
发布时间:2016-10-14 10:10:35 C/C++开发

Eclipse CDT:未解析包含stl头

我试图使用Eclipse编辑源代码,在C ++ Builder下编译,但是仍然遇到未解决的包含问题。 例如,代码如下: #include Eclipse IDE中的错误。 C ++ Builder确实没有向量文件,而是有编译器使用的 vector.h 。 如果我写 #include ..
发布时间:2016-10-13 12:18:08 Java开发

在C ++中的头文件中编写函数定义

我有一个类有很多小的功能。通过小函数,我的意思是不做任何处理,但只是返回一个字面值的函数。像 string Foo :: method()const { return“A”; } 我创建了一个头文件“Foo.h”和源文件“Foo .cpp“。但是由于函数非常小,我想把它放在头文件本身。我有以下问题 如果我把这些函数defnition放在头文件中,是否有任何 ..
发布时间:2016-10-13 11:58:23 C/C++开发