预处理指令

时间:2010-08-15 13:52:17

标签: c-preprocessor

预处理器指令究竟是什么?我确实知道#include是一个预处理器指令,但它究竟做了什么?

4 个答案:

答案 0 :(得分:2)

顾名思义,PRE处理器在进入编译器之前对源文件进行处理。 C语言有一个执行各种操作的预处理器。

#include - 将文件导入并扩展到要编译的文件中 #define - 在要编译的文件中更改为字符串的宏。

维基百科(我知道人们讨厌这个)对于C预处理器有a good overview

没有任何东西阻止你使用另一个如m4或自己编写,这会根据某些模板符号修改或添加字符串到文件中。

答案 1 :(得分:0)

预处理器是一个在主处理之前处理的应用程序。

在此上下文中,预处理器在编译器处理源代码之前准备源代码以生成代码。预处理器处理删除注释,扩展#defines和#including文件等等。

所有预处理器任务背后的主要原则是PP对编程语言的语法一无所知。它只是做无意识的文本操作。

答案 2 :(得分:0)

您在C或C ++等语言中遇到的预处理器基本上是一个自动文本操纵器。它操纵源代码,所以说。

指令是一个控制该预处理器的命令。

例如:#include <stdio.h>表示应将stdio.h复制到当前文件中的这个位置。

重要的是要注意,预处理器仅适用于文本级别。它复制或插入文本,或删除它,但它不会对Assembly进行任何转换,也不会进行任何链接或进一步编译。

为了不多次复制文本,您经常会在头文件中看到此构造:

#ifndef _HEADERFILE_H_
#define _HEADERFILE_H_

/* rest of headerfile... */

#endif

这确保了头文件只被复制到预处理后要编译的完整代码中一次(因为你可能有多个.c#include "headerfile.h"文件。)。

gcc 中使用C或C ++的预处理程序时,所有预处理程序指令都以为前缀。但是,根据编译器套件和编程语言的不同,这可能会有所不同。

答案 3 :(得分:0)

C预处理程序指令的规范参考是C standard的第6.10节(链接是N1570,2011 ISO C标准的最新公开草案)。