Visual C++ 宏中的可变长度参数
Variable length args in macro in Visual C++
在主要使用 gcc 多年之后,我突然需要在 Windows 上使用 Visual C++。我需要翻译的最新内容是:
#ifdef DBG_ENABLE
#define DBG_PRINT(x...) printf(x)
#else
#define DBG_PRINT(x...)
#endif
这给了我这个错误:
error C2010: '.': unexpected in macro parameter list
有人可以分享Windows这样做的方法吗?
我尝试使用谷歌搜索和搜索 Microsoft 文档,但无法找到一种方法来表达带来相关结果的问题。
#define DBG_PRINT(x...) printf(x)
不是在 VC++ 中使用可变参数宏的正确语法。
根据 Variadic macros 上的 Microsoft 文档,试试这个:
#ifdef DBG_ENABLE
#define DBG_PRINT(...) printf(__VA_ARGS__)
#else
#define DBG_PRINT(...)
#endif
或者:
#ifdef DBG_ENABLE
#define DBG_PRINT(s, ...) printf(s, __VA_ARGS__)
#else
#define DBG_PRINT(s, ...)
#endif
在主要使用 gcc 多年之后,我突然需要在 Windows 上使用 Visual C++。我需要翻译的最新内容是:
#ifdef DBG_ENABLE
#define DBG_PRINT(x...) printf(x)
#else
#define DBG_PRINT(x...)
#endif
这给了我这个错误:
error C2010: '.': unexpected in macro parameter list
有人可以分享Windows这样做的方法吗?
我尝试使用谷歌搜索和搜索 Microsoft 文档,但无法找到一种方法来表达带来相关结果的问题。
#define DBG_PRINT(x...) printf(x)
不是在 VC++ 中使用可变参数宏的正确语法。
根据 Variadic macros 上的 Microsoft 文档,试试这个:
#ifdef DBG_ENABLE
#define DBG_PRINT(...) printf(__VA_ARGS__)
#else
#define DBG_PRINT(...)
#endif
或者:
#ifdef DBG_ENABLE
#define DBG_PRINT(s, ...) printf(s, __VA_ARGS__)
#else
#define DBG_PRINT(s, ...)
#endif