使用#defines自动替换变量

sam*_*moz 3 c string replace c-preprocessor

我有一个大约100个#defines的文件,从1-100开始,每个文件都有一个唯一的字符串值.

现在我正在尝试打印这个值,但是我想要打印#define是什么,而不是值.例如:

#define FIRST_VALUE 1
var = FIRST_VALUE;
printf("%s", var);
Run Code Online (Sandbox Code Playgroud)

我希望printf打印FIRST_VALUE,而不是1.

有没有办法在C中这样做?或者我必须在switch语句中写出100多个case块?

Dav*_*nds 12

您可以使用字符串化来实现您的目标:

  #define FIRST_MACRO
  #define MACRO_TO_STRING(x) #x

  #include <stdio.h>

  main() {
     printf("%s\n",  MACRO_TO_STRING(FIRST_MACRO));
  }
Run Code Online (Sandbox Code Playgroud)

该程序将输出:

FIRST_MACRO