# предупреждение и оценка макросов - PullRequest
9 голосов
/ 19 февраля 2010

У меня есть следующий код:

#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 Ответ

5 голосов
/ 19 февраля 2010

Из документации препроцессора gcc

Ни макрос #error, ни #warning не расширяют свой аргумент.Внутренние последовательности пробелов заменяются одним пробелом.Линия должна состоять из полных токенов.Лучше всего, чтобы аргумент этих директив был одной строковой константой;это позволяет избежать проблем с апострофами и т. п.

Так что это невозможно, по крайней мере, в gcc.

Согласно MSDN это должно работать для MSVC, хотя у меня нет доступа к Visual Studio в настоящее время для проверки этого

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...