开发者

#warning and macro evaluation

开发者 https://www.devze.com 2022-12-20 13:44 出处:网络
I have the following code : #define LIMIT_DATE \\\"01-03-2010\\\" #ifdef LIMIT_DATE #if _MSC_VER #pragma message (\"Warning : 开发者_StackOverflow中文版this release will expire on \" LIMIT_DATE)

I have the following code :

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

#ifdef LIMIT_DATE
    #if _MSC_VER
        #pragma message ("Warning : 开发者_StackOverflow中文版this release will expire on " LIMIT_DATE)
    #elif   __GNUC__
        #warning ("Warning : this release will expire on " LIMIT_DATE)
    #endif
#endif

The problem is that LIMIT_DATE is not evaluated when printing the warning.

I searched on Google, but didn't found yet the solution.

Thanks for help.


From gcc preprocessor documentation

Neither #error nor #warning macro-expands its argument. Internal whitespace sequences are each replaced with a single space. The line must consist of complete tokens. It is wisest to make the argument of these directives be a single string constant; this avoids problems with apostrophes and the like.

So it's not possible at least in gcc.

According to MSDN this should work for MSVC althrough I don't have access to Visual Studio currently to test this

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号