那里有一个预定义的c++编译器宏,我可以用来告诉该文件是否使用“使用预编译头”,“创建预编译头”,“不使用预编译头”进行编译?
有关此类宏的目的,请参见@IronMensan的答案!
最佳答案
我认为没有任何东西,尽管我当然理解对它的渴望。每当我必须在许多不支持PCH的系统上构建跨平台库时,这都是永久的,因为许多文件的存储方式超出了他们的实际需要,因此可以很好地进行修剪。不幸的是,由于Visual Studio如何处理PCH,我不能这样做。即,包含PCH必须是文件的第一非注释行。从您说出问题的方式来看,我怀疑您也在使用Visual Studio。
我不确定这是否适合您,但您可以尝试执行以下操作:
#include MY_PCH_FILE
并使用
/DMY_PCH_FILE="myfile.h“
在命令行上控制第一个包含文件是什么。之后,您可以完全控制要包含的内容以及适当的 header 防护以及大多数现代编译器中的优化以检测 header 防护可以减少构建时间。您可以在项目的构 build 置中更改单个文件的宏定义,其方式类似于更改每个文件的PCH设置。
尽管我必须承认我不确定您要做什么,但我怀疑这确实是XY problem