我可以检查预编译中定义的宏是什么吗?

时间:2012-08-14 09:55:33

标签: c macros precompile

#define STR_A  abc
#if STR_A == abc   //I want to make some check here
    do something A
#else
    do something B
#endif

我可以查看STR_A定义的内容吗?

2 个答案:

答案 0 :(得分:3)

如果您想检查STR_A是否已定义为令牌abc(本身不应该是另一个宏),您可以自行解决一些技巧

#define STR_A_TESTER_abc 1
#define CONCAT(A, B) A ## B
#define STR_A_TESTER CONCAT(STR_A_TESTER_, STR_A)

#if STR_A_TESTER
// do whatever
#else
// or other
#endif

答案 1 :(得分:-1)

在尝试区分操作系统时,这种情况发生了很多。

同样可以用于 STR_A

#if defined(STR_A)
#  if (STR_A == "abc")
    // do something
#  else
    // do something else
#  endif
#else
  #warning "STR_A has not been defined."
#endif