【发布时间】:2011-03-31 16:49:19
【问题描述】:
这一直困扰着我一段时间,例如,如果我正在尝试编写这段代码:
// find the length of an array
#define ARRAY_LENGTH(arr) (sizeof(arr)/sizeof(int))
// declare an array together with a variable containing the array's length
#define ARRAY(name, arr) int name[] = arr; size_t name##_length = ARRAY_LENGTH(name);
int main() {
ARRAY(myarr, {1, 2, 3});
}
代码给出了这个错误:
<stdin>:8:31: error: macro "ARRAY" passed 4 arguments, but takes just 2
因为它将ARRAY(myarr, {1, 2, 3}); 视为传递ARRAY 参数myarr、{1、2 和3}。有什么方法可以将 数组文字 传递给宏?
编辑:在我需要的一些更复杂的宏中,我可能还需要将两个或多个数组传递给宏,因此可变参数宏不起作用。
【问题讨论】:
标签: c c-preprocessor