C预处理指令是否属于C编程语言?
我认为它们不是因为它们是由C预处理器而不是实际的C编译器处理的。
感谢。
答案 0 :(得分:1)
是的,但只是在C99(或更高版本)C标准第6.10节中讨论过。该标准(可能是有意)模糊了预处理器,只讨论它应该做的事情,而不是定义可能或必须>的事物列表em> do。
您是否可以为没有预处理器的标准C创建编译器?当然,尽管使用库会非常不方便。
答案 1 :(得分:1)
C标准精确定义了预处理阶段的行为。所以它绝对是C语言的一部分。
实现为正常处理,编译和链接提供单独的二进制文件是正常的。标准以这样的方式编写,即每个转换阶段可以由单独的可执行文件执行。但这不是一个要求。实际上,大多数编译器也允许通过单个命令完成所有这些操作(例如gcc foo.c bar.c
)。