你问的 C语言连接符,主要有两种场景需要区分:
1. 字符串常量连接符(双引号拼接)
在 C语言 中,相邻的字符串常量会在 编译阶段自动连接,不需要特殊符号。
#include <stdio.h>
int main() {
// 编译器自动拼接成 "Hello, World!"
char *str = "Hello, "
"World!";
printf("%s\n", str);
return 0;
}
输出:
Hello, World!
这是 C标准语法,在编译时完成,不会增加运行时开销。
2. 行连接符(反斜杠 \
)
- 在 C语言预处理阶段,反斜杠
\
放在行尾,表示 将下一行与当前行拼接为一行。 - 常用于 宏定义 或 长语句换行。
#include <stdio.h>
#define PRINT_HELLO printf("Hello, " \
"World!\n")
int main() {
PRINT_HELLO;
return 0;
}
等价于:
printf("Hello, World!\n");
3. 宏拼接符(##
)
在宏定义里,##
被称为 连接符,用来拼接标识符。
#include <stdio.h>
#define VAR(name, num) name##num
int main() {
int value1 = 100;
int value2 = 200;
printf("%d\n", VAR(value, 1)); // 展开成 value1
printf("%d\n", VAR(value, 2)); // 展开成 value2
return 0;
}
输出:
100
200
这里 name##num
会把 value
和 1
拼接成 value1
。
✅ 总结一下 C 语言里的 连接符:
- 字符串常量连接 →
"Hello," "World!"
→"Hello,World!"
- 行连接符 →
\
(拼接代码行) - 宏拼接符 →
##
(拼接标识符)
发表回复