#define 要在 Visual C++ 2013 中__noop的实际函数名称

#define real function name to __noop in Visual C++ 2013

本文关键字:函数 noop C++ Visual 2013 #define 要在      更新时间:2023-10-16

我可以在Visual C++ 2008中使用发布(NDEBUG)设置执行此操作:

调试.h

#ifdef _DEBUG
void debug_printf(const char* format, ...);
#else
#define debug_printf(format, v)     __noop
#endif

调试.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中的定义策略。但是我想知道是否有编译器设置可以再次以旧方式重新启用?

在第一种情况下也使用宏,并让它调用实际函数(其名称与宏不同)。

在第二种情况下,只需有一个空的宏主体。

使用可变参数宏。


类似的东西

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

如果未定义_DEBUG,则宏debug_printf将替换为任何内容(或者更确切地说,空行)。