在C中打印出变量名称的函数
我正在尝试创建一个函数,该函数接收一个变量并打印出它的名称
它看起来像这样
#include <stdio.h>
void print_name(int a);
int main()
{
int a_random_name;
print_name(a_random_name);
return 0;
}
输出:
a_random_name
我怎么能在 c 中做到这一点?
回答
正如评论中所讨论的,您不能使用函数来执行此操作,而是使用宏:
#include <stdio.h>
#define print_name(x) (sizeof (x), printf("%sn", #x))
void foo() {}
int main()
{
int a_random_name;
print_name(a_random_name);
print_name(foo);
return 0;
}
// Prints:
// a_random_name
// foo
请注意,(sizeof (x), 宏的部分在这里是为了确保变量存在。
有关宏操作的更多信息:
- https://gcc.gnu.org/onlinedocs/cpp/Stringizing.html#Stringizing
- https://gcc.gnu.org/onlinedocs/cpp/Macros.html
C11 宏规范:
- http://port70.net/~nsz/c/c11/n1570.html#6.10.3.2
- 很可能他们对一个他们认为不应该得到答案的问题的答案投反对票。拒绝投票是一个愚蠢的理由,但人们可以出于任何原因自由地拒绝投票。
- @Yun 是的。见 http://port70.net/~nsz/c/c11/n1570.html#6.10.3.2