[英]Why # is required before #include<stdio.h>?
#
的功能是什么?
它表示预处理器指令 :
您需要记住的一件重要事情是C预处理器不是C编译器的一部分。
C预处理器使用不同的语法。 C预处理器中的所有指令都以井号(#)开头。 换句话说,井号表示预处理程序指令的开头,它必须是该行上的第一个非空格字符。
#
可能被任意选择为C语法中未使用的字符。 我猜想, @
也会起作用。
如果没有表示它的字符,则可能无法区分用于预处理器的代码 - 如何判断if (FOO)
是否要进行预处理?
因为#
是引入预处理程序语句的标准前缀。
在早期的C编译器中,预处理器是一个单独的程序,它将处理所有预处理器语句(类似于早期C ++“编译器”的方式,如cfront生成的C代码)并为编译器生成C代码(它可能仍然是单独的程序,但它现在也可能只是编译器的一个阶段)。
#
符号只是一个有用的字符,可由预处理器识别并作用,例如:
#include <stdio.h>
#if 0
#endif
#pragma treat_warnings_as_errors
#define USE_BUGGY_CODE
等等。
预处理程序指令是程序代码中包含的行,它们不是程序语句,而是预处理程序的指令。 这些行总是以井号(#)开头。 预处理程序在实际编译代码开始之前执行,因此预处理程序在语句生成任何代码之前摘要所有这些指令。
这是因为#是一个预处理器语句的指示符
在编译代码之前的意思是,它将包含文件stdio.h
#
是预处理器指令。 预处理器处理源文件包含( #include
),宏定义( #define
)和条件包含( #if
)的指令。 当预处理器遇到这个时,它将包括标题,展开宏并继续编译。 它可以用于其他目的,例如使用#error指令暂停编译。 这称为条件编译。
我们知道,没有预处理器程序不运行。 预处理器是#或#include或#define或其他。 所以在#include之前需要#。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.