编译器应该为#define的某些组合引发错误

时间:2012-07-08 10:13:24

标签: c-preprocessor preprocessor-directive

在当前的项目中,我正在进行大量试验,以了解不同解决方案对性能的影响。由于我喜欢保留所有代码,因此我有很多#ifdef指令,这使我可以轻松地打开和关闭某些优化。但是,未涵盖某些定义组合。如果发生这种情况,我希望看到编译器错误,即:

#define A
#define B

#ifdef A
#ifdef B
//invalid combination of defines. Compiler should raise an error.
#endif
#endif

#ifdef A
//do something
#endif
#ifdef B
//do something else
#endif

这可能吗?

4 个答案:

答案 0 :(得分:8)

是。只需使用error directive#error)。

#ifdef A
#ifdef B
#error "invalid combination of defines."
#endif
#endif

答案 1 :(得分:2)

#ifdef A
#ifdef B
//invalid combination of defines. Compiler should raise an error.
#error Invalid combination
#endif
#endif

答案 2 :(得分:2)

使用错误预处理程序指令:

#error "Invalid combination"

答案 3 :(得分:2)

#if defined(A) && defined(B)
#error invalid combination of defines
#endif