为什么#include指令在语句末尾没有分号?

时间:2012-04-04 12:42:02

标签: c include

在C中,分号(;)用于表示语句的结尾。为什么#include行不需要分号?

5 个答案:

答案 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”的末尾。预处理器会给你一个警告并忽略它。