C / C ++预处理器指令检查已定义且字符串不为空

时间:2015-01-23 15:25:29

标签: c c-preprocessor preprocessor-directive

我试图获得类似的东西:

#if (!defined(SVN_REV) || (SVN_REV==""))
   char svnrev[10]="not found";
#else
   char svnrev[16]=SVN_REV;
#endif

处理编译器没有找到特定环境变量的情况:

define SVN_REV ""

对我来说应该被视为缺少定义。

但似乎这是不可能的,是否有人找到了实现结果的方法?

1 个答案:

答案 0 :(得分:1)

不,C预处理器不会比较字符串。

你可以这样做:

#if !defined SVN_REV
#define SVN_REV "not found"
#endif
const char *svnrev = SVN_REV;

达到同样的效果。