У меня есть следующий код:
#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, но еще не сделал найденный решение.
Спасибо за справку.
Из документации по препроцессору gcc
Ни #error, ни #warning макрос не расширяет свой аргумент. Каждая внутренняя последовательность пробелов заменяется одним пробелом. Строка должна состоять из полных токенов. разумнее всего сделать аргумент этих директив константой из одной строки ; это позволяет избежать проблем с апострофами и т.п.
По крайней мере, в gcc это невозможно.
Согласно MSDN , это должно работать для MSVC, хотя в настоящее время у меня нет доступа к Visual Studio, чтобы протестировать этот