三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

C语言:函数式宏中的#运算符

C语言:函数式宏中的#运算符
  • 在函数式宏中,替换列表里标识符前的#运算符,会让该标识符先经过参数替换,再被一对双引号包裹起来,最终形成一个字符串字面量。
  • 此外,预处理器会自动添加反斜杠来转义内部的双引号,并将字符串中的反斜杠数量翻倍;同时,会移除字符串首尾的空白字符,并将中间的连续空白字符(非字符串字面量内部的)合并为单个空格。
  • 这个过程被称为字符串化。

示例:

#include<stdio.h>#defineSTR(x)#xintmain(){printf("%s\n",STR(hello));printf("%s\n",STR(hello world));printf("%s\n",STR(hello world));printf("%s\n",STR(hello"Hugo"));return0;}

运行结果:

← 返回列表