#warning和宏观评估

时间:2010-02-19 17:36:44

标签: 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

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

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

感谢您的帮助。

1 个答案:

答案 0 :(得分:5)

From gcc preprocessor documentation

  

#error和#warning都没有   宏观 - 扩大其论点。内部   每个空格序列都被替换   只有一个空间。这条线必须   由完整的代币组成。它是   最明智地提出这些论点   指令是单个字符串   不变;这避免了问题   撇号之类的。

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

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