你问的 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 语言里的 连接符

  1. 字符串常量连接 → "Hello," "World!" → "Hello,World!"
  2. 行连接符 → \(拼接代码行)
  3. 宏拼接符 → ##(拼接标识符)