вторник, 29 мая 2007 г.

__noop и я

Для вывода отладочных сообщений у меня есть функция DebugMsgW со списком аргументов как в printf, которая внутри себя использует OutputDebugStringW. Ну и вызваю я её так:
::DebugMsgW(L"fafa\n");

И вот отладка прошла нормально, начинаю делать релиз. А без _DEBUG эта функция превращается так:
#define DebugMsgW __noop

Компилирую. И вижу тучу ошибок:
error C2039: '__noop' : is not a member of '`global namespace''

Начинаю ковыряться в опциях компилятора Compiler Intrinsics , какие-то #pragma intrinsics(..) подставлять. Нихуя.
Потом вдруг понимаю какой я идиот! Виной тому два двоеточия перед
DebugMsgW! Получается же ведь такое:
::__noop(...)

вот и ищет компилятор в глобальном пространстве имен этот __noop. А его там нет. Конечно.

Да я к чему это - внимательней надо читать сообщения об ошибках.

Комментариев нет: