Компилятор VC 7.1
Пишу макрос:
#define DO_DISABLE_WARNING #pragma warning(disable : 4251)
И сразу же его использую
DO_DISABLE_WARNING
Если выставляю опции компилятору /P или /P /EP (вывод результата препроцессора в файл) то все нормально.
Если этих опций нет — ругается на чем свет стоит:
По моему ключевое
error C2121: '#' : invalid character : possibly the result of a macro expansion
В чем ошибка?
pf79 wrote:
> Компилятор VC 7.1
> Пишу макрос:
>
> > #define DO_DISABLE_WARNING #pragma warning(disable : 4251)
>
[]
> В чем ошибка?
Нельзя определить макрос, который разворачивается в директиву препроцессора.
--
Maxim YegorushkinPosted via RSDN NNTP Server 1.9
Здравствуйте, pf79, Вы писали:
P>А обойти как нибудь можно ?
P>На самом деле макрос сложнее, для разных компиляторов и разных ОС.
P>Не хотелось бы разворачивать его в каждом h-файле(а то и по несколько раз в одном файле).
#include "do_disable_warning.h"
А в do_disable_warning.h
#ifdef SOME_DEF
#pragma warning(disable : 4251)
#else
//Ещё что-то
#endif
Дружба не наследуется и не транзитивна.
©Бьерн Страуструп