我有几个配置文件,每个配置文件包含一些布尔宏的定义,设置为0或1.然后,在我的代码中,我检查这样一个宏的值,以决定激活代码的哪一部分.现在是棘手的部分:我想确保包含我的宏定义的标题.
在下面的示例中,如果我忘记包含包含FOO定义的头文件,编译器将打印"world!",而我希望它生成错误.
//in the configuration header file
#define FOO 1
//in a cpp file
#if FOO //I would like this to generate an error if I forgot to include the header file
#pragma message "Hello"
#else
#pragma message "world!"
#endif
Run Code Online (Sandbox Code Playgroud)
有可能实现这样的行为吗?怎么样?
为了澄清,我不问如果没有定义宏,如何生成错误,但是如果可以转换该#if FOO行,同时它检查布尔值并在FOO未定义时生成错误.
这样做的关键是开发人员会知道他们的代码应该包含
SPECIAL_MACRO(FOO)
Run Code Online (Sandbox Code Playgroud)
同时,检查FOO的布尔值,就好像它是一个#if FOO语句,并防止它们忘记包含头定义FOO.