首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C预处理语句是C语言的一部分吗?

C预处理语句是C语言的一部分吗?
EN

Stack Overflow用户
提问于 2013-06-17 13:41:26
回答 3查看 687关注 0票数 4

我记得我的一位教授在一门C入门课程中说过的话。他说,#define预处理器命令使程序员能够创建一个常量,以便在以后的代码中使用,并且该命令是C语言的一个部分。

代码语言:javascript
复制
/* Is this truly C code? */
#define FOO 42

因为这是在一个入门编程类中,我怀疑他只是在简化源文件和编译器之间的关系,但是我还是想验证我的理解。

预处理语句是否完全独立于C语言(取决于所使用的特定编译器),还是在C99标准中显式地描述了它们?出于好奇,K&R有没有提到过预处理宏?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-06-17 13:43:46

是的,标准描述了预处理器。它是C语言的一个标准化部分。

注意,#include是代码模块化所必需的,它是一个预处理指令。

公开提供的C99标准草案中,预处理器在第6.10节中进行了描述。

票数 8
EN

Stack Overflow用户

发布于 2013-06-17 13:48:27

预处理器确实是C和C++标准( C++标准的第16章)的一部分,这些标准描述了预处理程序和语言的交互方式(例如,重新定义C关键字是非法的)。

但是,对于任何简单的文件预处理,C预处理程序都可以使用C以外的其他语言(例如,我看到它与LaTeX文件一起使用)。

票数 2
EN

Stack Overflow用户

发布于 2013-06-17 13:45:58

是的,预处理器是C语言的部分。从概念上讲,它是在编译源之前运行的。

除了常量定义之外,预处理器还用于实现两个非常重要的构造:

  1. #include,它将其他文件引入编译单元。
  2. 包括警卫;即模式, #如果定义( METAWORD )#定义METAWORD 1 /*结构定义,函数原型*/ #endif

出于兴趣,这两种用法已经保存到C++中,常数定义可以在其他(更好的?)中实现。方式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17149001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档