#warning和宏观评估

Ood*_*ini 9 c++ macros

我有以下代码:

#define LIMIT_DATE \"01-03-2010\"

#ifdef LIMIT_DATE
    #if _MSC_VER
        #pragma message ("Warning : this release will expire on " LIMIT_DATE)
    #elif   __GNUC__
        #warning ("Warning : this release will expire on " LIMIT_DATE)
    #endif
#endif
Run Code Online (Sandbox Code Playgroud)

问题是打印警告时不评估LIMIT_DATE.

我在Google上搜索过,但没有找到解决方案.

感谢帮助.

lol*_*nus 5

来自gcc预处理器文档

#error和#warning宏都没有扩展它的论点.内部空白序列每个都用一个空格替换.该行必须包含完整的令牌.最明智的做法是使这些指令的参数为单个字符串常量; 这避免了撇号等问题.

所以至少在gcc中是不可能的.

根据MSDN,这应该适用于MSVC我目前无法访问Visual Studio来测试它