C/C++宏定义连接符“\”
时间: 2024-09-17 17:00:48 浏览: 37
C/C++笔试题
在C/C++语言中,反斜杠(\)是一个转义字符,当它出现在字符串常量、预处理器指令或者行结束处时,有特殊用途:
1. **行延续**:如果在字符串字面量的结尾遇到`\`,这表示该行不会在此结束,而是会继续到下一行,直到遇到另一个字符串结束符(如`"`)。
```cpp
char str[] = "Hello\nworld\\";
```
2. **文件包含的路径分隔符**:在`#include`指令中,`\`用于分隔目录层级,表示后续内容是要从当前文件所在的目录开始查找。
```cpp
#include "dir/subfile.h"
```
3. **预处理器指令展开**:宏定义通常使用`##`操作符连接两个宏名,如果中间插入`\`,会在宏替换阶段把它们连成一个整体。
```cpp
#define CONCATENATE(a, b) a##b
CONCATENATE(str, ing); // 输出 string
```
4. **避免立即解析**:有时,如果你想让预处理器忽略接下来的一对括号内的内容直到下一个`\`,可以使用`\\( ... \)`。
```cpp
int main() {} // 不会被 `#define FOO (10)`
#define FOO \\(10\) // 这里 FOO 只包含空格
```
阅读全文