C 如何从参数打印函数中的数组名?

C 如何从参数打印函数中的数组名?,c,C,我有这样一个函数: foo(int a[], int b); 我想打印函数中数组的名称。如果我打电话 foo(cards, 5); 我想打印这个:array name:cards;数组大小:5。我该怎么做?你不能。在程序执行时,源代码中使用的名称“cards”不再可用。但你可以做到: void foo(int *a, int b, const char *name); ... foo(cards, 5, "cards"); 你不能。在程序执行时,源代码中使用的名称“cards”不再可用。但

我有这样一个函数:

foo(int a[], int b);
我想打印函数中数组的名称。如果我打电话

foo(cards, 5);

我想打印这个:
array name:cards;数组大小:5
。我该怎么做?你不能。在程序执行时,源代码中使用的名称“cards”不再可用。但你可以做到:

void foo(int *a, int b, const char *name);
...
foo(cards, 5, "cards");

你不能。在程序执行时,源代码中使用的名称“cards”不再可用。但你可以做到:

void foo(int *a, int b, const char *name);
...
foo(cards, 5, "cards");

创建包装器宏

#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(卡片,5张)而不是。

来创建包装宏

#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(卡片,5张)
而不是。

可能重复的No,不是-处理获取封闭函数的名称。可能重复的No,不是-处理获取封闭函数的名称。