C语言代码中行尾的反斜杠\符号有什么作用?
C语言宏定义中行尾反斜杠
\的含义 你看到的行尾\是C预处理器规定的行续接符,具体作用如下:
- C标准中
#define定义的宏默认仅作用于当前单个逻辑行,当宏的实现逻辑较长、拆分成多行书写提升可读性时,就需要在除了宏定义最后一行之外的每一行末尾添加\,作用是告诉预处理器:将下一行的内容和当前行拼接,视为同一行的宏定义内容处理。 - 你贴出的
_syscall3是Linux 0.11用来批量生成带3个参数的系统调用封装函数的宏,整个宏展开后是一个完整的C函数代码块。如果不加\,预处理器只会把第一行#define _syscall3(type,name,atype,a,btype,b,ctype,c)视为宏定义,后面所有行都会被当成普通C代码处理,编译时直接报错。 - 注意事项:
\必须是所在行的最后一个字符,后面不能跟空格、制表符等任何可见/不可见字符,否则预处理器会识别失败。
可以参考这个极简的等效示例:
// 单行写法的宏 #define ADD(a,b) ((a) + (b)) // 多行等效写法,预处理器处理后和上面完全一致 #define ADD(a,b) \ ((a) + (b))
内容的提问来源于stack exchange,提问作者code writer 3000
相关产品推荐
相关产品推荐

