我需要在预编译头.h文件中分支某个语句,基于.h现在是否用于创建 PCH(即包含在用/编译的cpp中) Yc),或者现在只包括使用 PCH(即包含在用/ Yu编译的cpp中)。
换句话说,我正在寻找像 -
这样的东西#ifdef NOW_CREATING_THE_PCH
#import yadayada_with_option_a
#else
#import yadayada_with_option_b
#endif
......并且找不到任何东西。 任何想法将不胜感激!
谢谢,
-Ofek
[编辑:]我需要这个的原因是我使用Incredibuild,并开始获得this warning。根据常见问题解答建议,我希望在PCH创建过程中#import no_implementation,在PCH使用期间使用implementation_only。
答案 0 :(得分:1)
您可以专门更改stdafx.cpp(或任何使用/ Yc编译的源文件)的配置(在Visual Studio中)以定义符号NOW_CREATING_THE_PCH,并为其余源文件保留未定义的符号(用/ Yu编译。
这不是你开箱即用的东西,但如果你只需要为一个项目(或几个)做这件事,那就不是问题了。
答案 1 :(得分:0)
虽然这不是您问题的直接答案,但解决此问题的最简单方法是在头文件中使用带有#import
的{{1}}语句,该文件用于生成预编译头文件(通常是StdAfx.h)并将头文件重新no_implementation
到源文件中,用于触发使用参数#import
生成pch。这样就可以定义包装函数的实现,但只能在一个地方定义。