【发布时间】:2011-02-09 18:24:26
【问题描述】:
我正在尝试提出一个宏来执行以下操作,
MY_MACRO(type,name,args...)
MY_MACRO(int,_array,1,2,3)
并扩展到,
int _array[] = {1,2,3};
coll* __array = my_call(&array[0],&array[1],&array[2]);
这可能有/没有编译器特定的魔法吗?
my_call 需要可变数量的参数,我不想直接传递数组。
编辑:我已经将以下 SO 问题中接受的答案用于 var args,
Macro returning the number of arguments it is given in C?
所以我可以找出数组中有多少个元素。
【问题讨论】:
-
你的宏到底是做什么的?
-
您想要的对于任意数量的参数是不可能的,正如所写的那样,但我很困惑为什么要将指向每个数组元素的单独指针传递给函数调用。只需传递一个指向第一个元素的指针就可以了。
标签: c++ c c-preprocessor