Привет!
Я использовал следующий макрос C , но в C ++ он не может автоматически разыграть void*
на type*
.
#define MALLOC_SAFE(var, size) { \
var = malloc(size); \
if (!var) goto error; \
}
Я знаю, я могу сделать что-то вроде этого:
#define MALLOC_SAFE_CPP(var, type, size) { \
var = (type)malloc(size); \
if (!var) goto error; \
}
Но я не хочу переписывать большую часть кода, где MALLOC_SAFE
был использован.
Есть ли способ сделать это без указания типа для макроса?Может быть, некоторые MSVC 2005 #pragma
/ __declspec
/ другие?
ps: я не могу использовать компилятор C, потому что мой код является частью (одного из сотен модулей) большогопроект.И теперь это на C ++.Я знаю, я могу построить свой код отдельно.Но это старый код, и я просто хочу его быстро портировать.
Вопрос касается void * casting;) Если это невозможно, я просто заменю MACRO_SAFE на MACRO_SAFE_CPP
Спасибо!