MSVC 未正确扩展 __VA_ARGS__
考虑这段代码: #define F(x, ...) X = x and VA_ARGS = __VA_ARGS__ #define G(...) F(__VA_ARGS__) F(1, 2, 3) G(1, 2, 3) 两个宏的预期输出都是 X …
如何挑选出发送到仅采用可变参数的宏的第一个参数
我尝试获取发送到可变参数宏的第一个实际参数。这是我尝试过的,但在 VS2010 中不起作用: #define FIRST_ARG(N, ...) N #define MY_MACRO(...) declt…
C 中可变参数宏的问题
我在 C 中的 #define 语句中遇到可选参数的问题,或者更具体地说,在 gcc 4.2 中: bool func1(bool tmp) { return false; } void func2(bool tmp, bo…
我可以在中间而不是末尾定义可变 C 预处理器宏吗?
如果我这样做,GCC 会抱怨: #define M(obj,met, ..., contents) obj##_##met(const void * self, __VA_ARGS__) { \ contents \ } 给我两个原因: err…
具有零参数和逗号的可变参数宏
考虑这个宏: #define MAKE_TEMPLATE(...) template 当与零参数一起使用时,它会产生错误的代码,因为编译器期望逗号后面有一个标识符。实际上,VC 的…
向可变参数宏添加默认参数
是否可以在可变宏中的变量参数之前添加默认参数? 例如,我有宏的版本,就像 #define MACRO(arg1, ...) func(arg1, ##__VA_ARGS__) 我想在变量参数之…
有没有办法在 Visual C++ 中编写带有变量参数列表的宏?
据我所知,在 gcc 中你可以写这样的东西: #define DBGPRINT(fmt...) printf(fmt); Is there a way to do that in VC++?…