预处理器指令究竟是什么?我确实知道#include
是一个预处理器指令,但它究竟做了什么?
答案 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标准的最新公开草案)。