【发布时间】:2014-09-14 20:28:29
【问题描述】:
我有这个方法
foo_l(int *array, size_t l)
{
/*
code
*/
}
我写了这个宏
#define foo(X) foo_l(X,sizeof(X)/sizeof(int))
所以我可以如下使用它们
int main()
{
int a[]={1,2,3};
foo(a);
return 0;
}
并且避免每次都写入数组的长度。
我的问题是,我可以扩展我的宏以便它可以处理类似的事情
foo_l((int[]){1,2,3}, 3);
在函数参数字段中声明了一个数组?
因为foo((int[]){1,2,3}) 不起作用!我认为问题在于宏将(int[]){1,2,3} 视为参数列表而不是唯一参数。有什么想法吗?
附:我对宏观世界很陌生,我通常使用 c99。
【问题讨论】: