c++在编译时支持全局头文件吗?

Does C++ Support Global Headers At Compile Time?

本文关键字:文件 全局 支持 编译 c++      更新时间:2023-10-16

当尝试编译外部提供的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。