如果我在预编译头文件中定义了一些东西,比如:
#define __BUILD_MAC__然后在头文件中执行以下操作:
#ifdef __BUILD_MAC__
typedef void* HINSTANCE;
#endif这应该是可行的。我知道这是因为当我编译的时候,我会收到关于HINSTANCE没有命名类型的错误。
要使这些定义可用,我还需要做些什么吗?
发布于 2010-04-06 07:14:57
在预编译头之前的任何定义都将被忽略。考虑通过编译器级别开关或via进行定义:
配置属性-> C/C++ ->预处理器->预处理器定义
You can read more on MSDN
当您使用预编译头时,编译器会忽略出现在hdrstop杂注之前的所有预处理器指令(包括编译指示)。由此类预处理器指令指定的编译必须与用于创建预编译头文件的编译相同。
对于GCC来说,预编译头是不一样的:
一旦看到第一个C标记,就不能使用预编译头。您可以在预编译头之前使用预处理器指令;您甚至可以在另一个头中包含预编译头,只要在
#include之前没有C标记。
发布于 2010-04-06 07:15:46
确保__BUILD_MAC__在实际用于构建.pch的文件中为#defined,并且在.pch中包含最后一个标头之前。
https://stackoverflow.com/questions/2581672
复制相似问题