相关疑难解决方法(0)

在参数数量上重载宏

我有两个宏,FOO2并且FOO3:

#define FOO2(x,y) ...
#define FOO3(x,y,z) ...
Run Code Online (Sandbox Code Playgroud)

我想定义一个新的宏FOO如下:

#define FOO(x,y) FOO2(x,y)
#define FOO(x,y,z) FOO3(x,y,z)
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为宏不会在参数数量上超载.

无需修改FOO2FOO3,是有一些方法来定义一个宏FOO(使用__VA_ARGS__或以其他方式),以获得分派的相同的效果FOO(x,y)FOO2,并FOO(x,y,z)FOO3

c macros c-preprocessor

168
推荐指数
6
解决办法
5万
查看次数

循环通过宏Varargs值

如果我定义一些宏:

#define foo(args...) ({/*do something*/})
Run Code Online (Sandbox Code Playgroud)

有没有办法实际循环args而不是传递给另一个函数?就像是

#define foo(args...) \
        { \
           for (int i = 0; i < sizeof(args); ++i) { \
             /*do something with args[i]*/ \
           } \
         }
Run Code Online (Sandbox Code Playgroud)

c macros variadic-functions

18
推荐指数
1
解决办法
9420
查看次数

标签 统计

c ×2

macros ×2

c-preprocessor ×1

variadic-functions ×1