在 C 中打印出变量名称的函数

Kai*_*ain 0 c

我正在尝试创建一个函数,该函数接收一个变量并打印出它的名称

它看起来像这样

#include <stdio.h>

void print_name(int a);

int main()
{
  int a_random_name;
  print_name(a_random_name);

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

a_random_name
Run Code Online (Sandbox Code Playgroud)

我怎么能在 c 中做到这一点?

Uly*_* BN 8

正如评论中所讨论的,您不能使用函数来执行此操作,而是使用宏:

#include <stdio.h>

#define print_name(x) (sizeof (x), printf("%s\n", #x))

void foo() {}

int main()
{
    int a_random_name;
    print_name(a_random_name);
    print_name(foo);

    return 0;
}
// Prints:
// a_random_name
// foo
Run Code Online (Sandbox Code Playgroud)

请注意,(sizeof (x), 宏的部分在这里是为了确保变量存在。

有关宏操作的更多信息:

C11 宏规范:

  • 很可能他们对一个他们认为不应该得到答案的问题的答案投反对票。拒绝投票是一个愚蠢的理由,但人们可以出于任何原因自由地拒绝投票。 (6认同)
  • @Yun 是的。见 http://port70.net/~nsz/c/c11/n1570.html#6.10.3.2 (3认同)