下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

简单解读预处理及包含命令

作者:课课家教育     来源: http://www.kokojia.com点击数:1152发布时间: 2019-03-04 10:14:51

标签: 编程语言C语言预处理及包含命令

大神带你学编程,欢迎选课

  相信大家在第一次看到“预处理命令”和“包含命令”时都会从字面意思理解为预先要处理的命令和包含某种代码的命令,那么事实上到底是不是这样的意思呢?下面课课家笔者就为大家简单解读预处理命令和包含命令的概念和作用。

  ◎预处理命令

  通常在我们使用库函数之前,通过用#include引入对应的头文件,而这种以#号开头的命令就被称为预处理命令。在实际中,C语言源文件要经过编译、链接才能生成可执行程序。编译(Compile)会将源文件(.c文件)转换为目标文件。对于VC/VS,目标文件后缀为.obj;对于GCC,目标文件后缀为.o。编译是针对单个源文件的,一次编译操作只能编译一个源文件,如果程序中有多个源文件,就需要多次编译操作。链接(Link)是针对多个文件的,它会将编译生成的多个目标文件以及系统中的库、组件等合并成一个可执行程序。

  在实际开发中,有时候在编译之前我们还需要对源文件进行简单的处理。比如我们希望自己的程序在WindowsLinux下都能够运行,那么就要在Windows下使用VS编译一遍,然后在Linux下使用GCC编译一遍。但是有个问题就是程序中要实现的某个功能在VS和GCC下使用的函数不同(假设VS下使用a(),GCC下使用b()),VS下的函数在GCC下不能编译通过,GCC下的函数在VS下也不能编译通过,换句话说就是不兼容。那么我们如何处理这个棘手的问题呢?这就需要在编译之前我们要先对源文件进行处理:如果检测到是VS,就保留a()删除b();如果检测到是GCC,就保留b()删除a()。这些在编译之前对源文件进行简单加工的过程,就称为预处理(也就是预先处理、提前处理)。

  预处理主要是处理以#开头的命令,比如#include <stdio.h>等。预处理命令要放在所有函数之外,而且一般都放在源文件的前面。预处理是C语言的一个重要功能,由预处理程序完成。当对一个源文件进行编译时,系统将自动调用预处理程序对源程序中的预处理部分作处理,处理完毕自动进入对源程序的编译。编译器会将预处理的结果保存到和源文件同名的.i文件中,比如main.c的预处理结果在main.i中。和.c一样,.i也是文本文件,可以用编辑器打开直接查看内容。C语言提供了多种预处理功能,如宏定义、文件包含、条件编译等,合理地使用它们会使编写的程序便于阅读、修改、移植和调试,也有利于模块化程序设计。下图是预处理命令的任意例子图1

预处理命令

图1

  ◎#include命令

  #include是文件包含命令,主要用来引入对应的头文件。#include的处理过程很简单,就是将头文件的内容插入到该命令所在的位置,从而把头文件和当前源文件连接成一个源文件,这与复制粘贴的效果相同。#include有两种使用方式,具体代码如下所示:

  #include <stdio.h>

  #include "my Header.h"

  使用尖括号<>和双引号""的区别在于头文件的搜索路径不同,包含标准库的头文件建议用尖括号,包含自定义的头文件建议用双引号。一个#include命令只能包含一个头文件,多个头文件需要多个#include命令。文件包含允许嵌套,也就是说在一个被包含的文件中又可以包含另一个文件。

  本次简单解读预处理及包含命令的教程到此就暂告一段落了,如果以后有补充的话笔者会继续在此补充,同时也欢迎大家继续补充。最后希望这次的教程对大家学习C语言能起到一定的帮助作用!

赞(0)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程