我有以下代码:
#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上搜索过,但还没找到解决方案。
感谢您的帮助。
答案 0 :(得分:5)
From gcc preprocessor documentation
#error和#warning都没有 宏观 - 扩大其论点。内部 每个空格序列都被替换 只有一个空间。这条线必须 由完整的代币组成。它是 最明智地提出这些论点 指令是单个字符串 不变;这避免了问题 撇号之类的。
所以至少在gcc中是不可能的。
根据MSDN这应该适用于MSVC通过我目前无法访问Visual Studio来测试这个