Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

#warning and macro evaluation

Tags:

c++

macros

I have the following code :

#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

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.

like image 645
Oodini Avatar asked Feb 19 '10 17:02

Oodini


1 Answers

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

like image 95
lollinus Avatar answered Oct 20 '22 22:10

lollinus