Mar*_*off 16

表示预处理器指令:

您需要记住的一件重要事情是C预处理器不是C编译器的一部分.

C预处理器使用不同的语法.C预处理器中的所有指令都以井号(#)开头.换句话说,井号表示预处理程序指令的开头,它必须是该行上的第一个非空格字符.

#可能任意选择作为C语法的其他未使用的字符. @我猜想,本来也会有效.

如果没有表示它的字符,则可能无法区分用于预处理器的代码 - 您如何判断是否if (FOO)要进行预处理?


pax*_*blo 5

因为#是引入预处理程序语句的标准前缀.

在早期的C编译器中,预处理器是一个单独的程序,它将处理所有预处理器语句(类似于早期C++"编译器"的方式,如cfront生成的C代码)并为编译器生成C代码(它可能仍然是单独的程序,但它现在也可能只是编译器的一个阶段).

#符号只是一个可以由预处理器识别并采取行动的有用人物,如:

#include <stdio.h>
#if 0
#endif
#pragma treat_warnings_as_errors
#define USE_BUGGY_CODE
Run Code Online (Sandbox Code Playgroud)

等等.


TNi*_*TNi 5

预处理程序指令是程序代码中包含的行,它们不是程序语句,而是预处理程序的指令.这些行总是以井号(#)开头.预处理程序在实际编译代码开始之前执行,因此预处理程序在语句生成任何代码之前摘要所有这些指令.

资料来源:http://www.cplusplus.com/doc/tutorial/preprocessor/


Kei*_*las 3

这是因为 # 是一个指示符,表明它是一个预处理器语句

这意味着在编译代码之前,它将包含文件 stdio.h