在C中,分号(;
)用于表示语句的结尾。为什么#include
行不需要分号?
答案 0 :(得分:12)
#include
(以及#
开头的所有其他行,如#define
)是preprocessor的一部分。这实际上是一个独立的程序,它在主编译器之前运行,并将诸如 include 文件之类的东西放到源代码和宏扩展中。
答案 1 :(得分:2)
#include
由预处理器处理,编译器不会看到这些语句。因此,在声明结束时不需要;
。
答案 2 :(得分:2)
因为预处理指令不是语句。
即使不是所有陈述都要求最终;
。例如:
int bla = 1;
if (bla) {
}
在声明bla
之后,我们有两个语句:一个if
语句和一个空的复合语句。没有;
但程序有效。
答案 3 :(得分:2)
该指令由预处理器处理它不是一个编译器,它是一个简单的文本替换处理器。它使用行尾(\n)
作为重要字符,不像C编译器只将其视为空格。也就是行末\
有效的原因。
答案 4 :(得分:1)
#include "whatever.h"
它只是用“whatever.h”替换源文件中的那一行。因此,您不需要将;
放在“whatever.h”的末尾。预处理器会给你一个警告并忽略它。