小编Jax*_*xWR的帖子

宏可以评估多个参数到另一个吗?

我想做这样的事情:

#define NEED3ARGS(a1,a2,a3) ( "[" #a1 " + " #a2 " + " #a3 "]" )
#define MULTIARG()  ARG1, ARG2, ARG3

NEED3ARGS( MULTIARG() )
Run Code Online (Sandbox Code Playgroud)

我希望它能输出如下内容:

( "[" "ARG1" " + " "ARG2" " + " "ARG3" "]" )
Run Code Online (Sandbox Code Playgroud)

但相反,我有:

$ cpp multiarg.c 
# 1 "multiarg.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "multiarg.c"

multiarg.c:4:23: error: macro "NEED3ARGS" requires 3 arguments, but only 1 given
NEED3ARGS
Run Code Online (Sandbox Code Playgroud)

有没有办法用ANSI-C/GNU GCC和C预处理器做我想做的事情?

谢谢!

c c-preprocessor

6
推荐指数
2
解决办法
2892
查看次数

标签 统计

c ×1

c-preprocessor ×1