我有以下代码:
#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上搜索过,但没有找到解决方案.
感谢帮助.
#error和#warning宏都没有扩展它的论点.内部空白序列每个都用一个空格替换.该行必须包含完整的令牌.最明智的做法是使这些指令的参数为单个字符串常量; 这避免了撇号等问题.
所以至少在gcc中是不可能的.
根据MSDN,这应该适用于MSVC我目前无法访问Visual Studio来测试它