有没有办法检查宏被定义为特定的东西?

时间:2017-07-22 03:41:39

标签: c c-preprocessor

据我所知,#ifdef只能检查是否定义了宏,而不是宏的定义。

#define MY_NUMBER 1
.
.
.
#ifdef MY_NUMBER
function();
#endif

我尝试过这样的事情:

#define MY_NUMBER 1
.
.
.
#ifdef MY_NUMBER 1
function();
#endif

并且编译器发出以下内容:

warning: extra tokens at end of #ifdef directive

并且不考虑宏的值(它只是被忽略)。

如何检查宏是否具有特定值?

1 个答案:

答案 0 :(得分:3)

就像在条件语句中一样,您可以在预处理器中使用相等(==)或不等(< / > / <= / >=)指令:

#if MY_NUMBER == 1
  function1();
#elif MY_NUMBER == 2
  function2();
#else
  function3();
#endif