# определить реальное имя функции для __noop в Visual C ++ 2013

Я могу сделать это в Visual C ++ 2008 с установкой Release (NDEBUG):

debug.h

#ifdef _DEBUG

void debug_printf(const char* format, ...);

#else

#define debug_printf(format, v)     __noop

#endif

debug.cpp

#include "stdafx.h"  //#include "debug.h" is inside it

void debug_printf(const char* format, ...) {
//so much work here
}

но больше не в Visual C ++ 2013, я получу ошибку компиляции в файле debug.cpp. Кажется, я должен изменить определяющую стратегию в debug.h. Но мне интересно, есть ли настройка компилятора для повторного включения по-старому?

0

Решение

Используйте макрос и в первом случае, и позвольте ему вызывать реальную функцию (которая называется чем-то отличным от макроса).

А во втором случае просто пустое тело макроса.

использование вариационные макросы.


Что-то вроде

#ifdef _DEBUG
# define debug_printf(fmt, ...) real_debug_printf(fmt, __VA_ARGS__)
#else
# define debug_printf(fmt, ...)
#endif

когда _DEBUG не определяется, то макрос debug_printf заменяется ничем (точнее, пустой строкой).

1

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector