#warning и макро-оценка

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

#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, но еще не сделал найденный решение.

Спасибо за справку.

9
задан Oodini 19 February 2010 в 07:36
поделиться

1 ответ

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

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

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

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

5
ответ дан 3 November 2019 в 07:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: