c++在编译时支持全局头文件吗?
Does C++ Support Global Headers At Compile Time?
当尝试编译外部提供的c++代码库时,我遇到了一个令人困惑的问题:
几个头文件缺少#include <MyLibrary.h>
,其中MyLibrary是一个明显的依赖项,只是缺少,并且阻止编译。
我的问题是:当编译c++代码时,是否有一种方法可以自动包含依赖项头文件,而不需要在每个.h/.cpp文件中添加#include ?换句话说,是一种为c++预处理器提供头文件列表的方法,以便在编译所有源代码时自动包含该列表?
我明白这可能是一个非常坏的主意,但我试图确定我所提供的代码是否只是坏了,或者如果有一些方法可以编译,而无需手动修复每个文件缺少依赖项。
c++语言标准不支持"全局头文件",但个别编译器支持。
它被称为强制包含
在Visual c++中是/FI
选项,而在g++中是-include
选项。
然而,对于Visual c++,包含通用头文件的通常方法是将这些包含文件放在一个名为
stdafx.h
的文件中,并首先将该文件包含在每个翻译单元中。这是Visual c++预编译头文件支持的一部分。这是有问题的,因为当它被打开时(在Visual Studio项目中默认是打开的),它会改变预处理规则,因此一些标准代码可能无法编译,但它可以大大加快大型构建。
是的,至少对gcc和compatible是这样。:使用-include
选项。参见https://stackoverflow.com/a/3387518/3150802。
相关文章:
- 声明要在 qml 和 cpp 文件中使用的全局字符串
- 在.cpp文件之间传递结构声明,而不使用全局头文件
- 在.cpp文件之间传递全局字符串变量?
- 在 elf 文件中查找全局变量的位置
- 在两个.cpp文件之间定义全局类/结构指针
- 从多个文件访问静态全局 WinForm UI 对象
- 为什么它无法在 c++ 中全局声明一个构建为 dll 文件的类?
- 创建文件函数是否可以打开仅在WinObj实用程序中的全局目录下列出的设备的句柄?
- 全局自动变量可以在 h 文件中声明吗?
- 是否有一种方法可以避免标头文件中使用的constexpr函数输入全局范围,而无需额外的名称空间
- 如何在多个文件中声明全局 std::vector 2d 数组?C++
- 访问另一个.cpp文件中的.cpp文件中定义的全局变量
- 为什么在 2 个不同的 cpp 文件中定义内联全局函数会导致神奇的结果
- 在主循环外部多个文件上定义全局变量
- 使用 API 而不是全局配置文件设置 OSM 配置选项
- 为什么我不能在头文件中定义全局函数
- 全局数组在 C 代码中添加到头文件时没有"类型"
- 查找声明全局变量的文件
- 通过其他文件中的另一个全局变量使用类的全局实例
- 是头文件全局作用域中的变量