Возможно ли, чтобы макрос оценивал несколько аргументов другого?

Я хотел бы сделать что-то вроде этого:

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

NEED3ARGS( MULTIARG() )

И я ожидал, что он выведет что-то вроде:

( "[" "ARG1" " + " "ARG2" " + " "ARG3" "]" )

Но вместо этого у меня есть:

$ 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

Есть ли способ сделать то, что я хочу, используя ANSI-C/GNU GCC и препроцессор C?

Спасибо!

6
задан AstroCB 2 November 2014 в 18:59
поделиться