#符号在C中的含义是什么?

Sed*_*ter 6 c

我遇到过这段代码,我不知道该怎么#reg做:

#define FPGA_WRITE(reg,val) do { printf("%-20s %08X <<- %08lX\n", #reg, (reg), (unsigned long)(val));} while (0)

int main()
{
   FPGA_WRITE(10,15);
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

这打印出以下内容:

10                   0000000A <<- 0000000F
Run Code Online (Sandbox Code Playgroud)

如果我取出#,我在执行代码时会遇到段错误.奇怪.有什么用#

May*_*yur 7

它是预处理器宏中使用的字符串化运算符(#)#define,
它将前面的参数转换为带引号的字符串