我记得我的一位教授在一门C入门课程中说过的话。他说,#define预处理器命令使程序员能够创建一个常量,以便在以后的代码中使用,并且该命令是C语言的一个部分。
/* Is this truly C code? */
#define FOO 42因为这是在一个入门编程类中,我怀疑他只是在简化源文件和编译器之间的关系,但是我还是想验证我的理解。
预处理语句是否完全独立于C语言(取决于所使用的特定编译器),还是在C99标准中显式地描述了它们?出于好奇,K&R有没有提到过预处理宏?
发布于 2013-06-17 13:43:46
是的,标准描述了预处理器。它是C语言的一个标准化部分。
注意,#include是代码模块化所必需的,它是一个预处理指令。
在公开提供的C99标准草案中,预处理器在第6.10节中进行了描述。
发布于 2013-06-17 13:48:27
预处理器确实是C和C++标准( C++标准的第16章)的一部分,这些标准描述了预处理程序和语言的交互方式(例如,重新定义C关键字是非法的)。
但是,对于任何简单的文件预处理,C预处理程序都可以使用C以外的其他语言(例如,我看到它与LaTeX文件一起使用)。
发布于 2013-06-17 13:45:58
是的,预处理器是C语言的部分。从概念上讲,它是在编译源之前运行的。
除了常量定义之外,预处理器还用于实现两个非常重要的构造:
#include,它将其他文件引入编译单元。出于兴趣,这两种用法已经保存到C++中,常数定义可以在其他(更好的?)中实现。方式。
https://stackoverflow.com/questions/17149001
复制相似问题