如何在参数函数中打印数组名称?

时间:2016-04-30 13:26:04

标签: c

我有这样的功能:

foo(int a[], int b);

我想在函数中打印数组的名称。如果我打电话

foo(cards, 5);

我想打印一下:array name:cards;array size:5。我该怎么做?

2 个答案:

答案 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);代替。