проблемиа с макросом.
От: pf79 Украина  
Дата: 12.10.05 09:17
Оценка:
Компилятор 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


В чем ошибка?
Re: проблемиа с макросом.
От: MaximE Великобритания  
Дата: 12.10.05 09:20
Оценка:
pf79 wrote:

> Компилятор VC 7.1

> Пишу макрос:
>
>
> #define DO_DISABLE_WARNING #pragma warning(disable : 4251)
>


[]

> В чем ошибка?


Нельзя определить макрос, который разворачивается в директиву препроцессора.

--
Maxim Yegorushkin
Posted via RSDN NNTP Server 1.9
Re[2]: проблемиа с макросом.
От: pf79 Украина  
Дата: 12.10.05 09:25
Оценка:
Здравствуйте, MaximE, Вы писали:


ME>Нельзя определить макрос, который разворачивается в директиву препроцессора.


А обойти как нибудь можно ?
На самом деле макрос сложнее, для разных компиляторов и разных ОС.
Не хотелось бы разворачивать его в каждом h-файле(а то и по несколько раз в одном файле).
Re[3]: проблемиа с макросом.
От: Paranoik  
Дата: 12.10.05 09:31
Оценка:
Здравствуйте, pf79, Вы писали:

P>А обойти как нибудь можно ?

P>На самом деле макрос сложнее, для разных компиляторов и разных ОС.
P>Не хотелось бы разворачивать его в каждом h-файле(а то и по несколько раз в одном файле).


#include "do_disable_warning.h"

А в do_disable_warning.h


#ifdef SOME_DEF
#pragma warning(disable : 4251)
#else
//Ещё что-то
#endif
Дружба не наследуется и не транзитивна.
©Бьерн Страуструп
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.