C语言 是否有办法在__VA_ARGS__中的每个参数上调用宏?

qfe3c7zg  于 2023-10-16  发布在  其他
关注(0)|答案(1)|浏览(80)

例如:

#define M(x) do { x++; f(x); } while(0)

#define M_ALL(...) do { ??? } while(0)

有没有办法在M_ALL的每个参数上调用M
这样做:

M_ALL(x, y, z)

将扩展为:

do { 
    do { x++; f(x); } while(0); 
    do { y++; f(y); } while(0); 
    do { z++; f(z); } while(0); 
} while(0)
xlpyo6sf

xlpyo6sf1#

如何使用X macro?(https://en.wikipedia.org/wiki/X_macro)。例如:

#define LIST(DO) \
    DO(x) \
    DO(y) \
    DO(z)

#define M(x) do { x++; f(x); } while(0);

#define M_ALL(list) do { list( M ) } while(0) 

M_ALL(LIST);

相关问题