我有这样的功能:
foo(int a[], int b);
我想在函数中打印数组的名称。如果我打电话
foo(cards, 5);
我想打印一下:array name:cards;array size:5
。我该怎么做?
答案 0 :(得分:3)
你不能。当您的程序执行时,名称"卡"在源代码中使用的不再可用。但你可以这样做:
void foo(int *a, int b, const char *name);
...
foo(cards, 5, "cards");
答案 1 :(得分:1)
创建包装器宏。
#define STR(v) #v
#define FOO(name, value) do{ fprintf(stderr, "array name:%s;array size:%d\n", STR(name), value);foo(name, value); }while(0)
使用FOO(cards, 5);
代替。