c语言预处理命令12个,C语言12 预处理命令

预处理命令可以改变程序设计环境,提高编程效率,它们不是C语言本身的组成部分,不能直接对它们进行编译,必须在对程序进行编译前,先对程序中这些特殊的命令进行“预处理”。经过预处理后,程序就不再包括预处理命令了,最后再由编译程序对预处理之后的原程序进行编译处理,得到可供执行的目标代码。C语言提供的预处理功能有3种,分别为宏定义,文件包含和条件编译。

1.

宏定义

宏定义是由源程序中的宏定义命令完成的,宏代换是由预处理程序自动完成的。在C语言中,宏分为有参数和无参数两种。无参宏的宏名后不带参数,其定义的一般形式为:

#define 标识符 字符串;

其中“#”表示这是一条预处理命令(在C语言中凡是以“#”开头的均为预处理命令),“define”为宏定义命令,“标识符”为所定义的宏名,“字符串”可以是常数,表达式,格式串等。符号常量的定义就是一种无参宏定义。

#define M (y*y+3*y);

它的作用是指定标识符 M

来代替表达式(y*y+3*y)。在编写源程序时,所有的(y*y+3*y)都可由M代替,而对源程序进行编译时,将先由预处理程序进行宏代换,即用(y*y+3*y)表达式取置换所有的宏名M,然后再进行编译。

#define 宏名(形参表) 字符串;

宏名(实参表);

#define M(y) y*y+3*y

......

k=M(5);

......

在上面的宏调用时,用实参5去代替形参y,经预处理宏展开后的语句为:

k=5*5+3*5

2.

文件包含

文件包含是C预处理程序的另一个重要功能 ,文件包含命令行的一般形式为:

#include "文件名"

或者

#include

文件包含命令的功能是把指定的文件插入该命令行位置取代该命令行,从而把指定的文件和当前的源程序文件连城一个源文件。

在程序设计中,文件包含是很有用的。一个大的程序可以分为多个模块,由多个程序分别编程,有些公用的符号常量或宏定义等可单独组成一个文件,在其他文件的开头用包含命令包含该文件即可使用。

(1)包含命令中的文件名可以用双引号引起来,也可以用尖括号括起来。例如一下写法都是允许的:

#include "stdio.h"

#include

使用尖括号表示在包含文件目录中取查找(包含目录是由系统的环境变量进行设置的,一般为系统头文件的默认存放目录,比如Linux

系统在/usr/include目录下),而不再源文件的存放目录中查找:使用双引号则表示首先在当前源文件目录中查找若未找到才到包含目录中取查找。用户编程时可根据自己文件所在的目录来选择某一种命令形式。

(2)一个include命令只能指定一个被包含文件,若有多个文件要包含,则需用多个include命令。

(3)文件包含允许嵌套,即在一个被包含的文件中又可以包含另一个文件。

3.

条件编译

预处理程序提供了条件编译的功能,可以按不同的条件去编译不同的程序部分,因而产生不同的目标代码文o件,这对于程序的移植和调试是很有用的。条件编译可分为3种形式。

第一种

#ifdef 标识符

程序段1

#else

程序段2

#endif

第二种

#ifndef 标识符

程序段1

#else

程序段2

#endif

与第一种形式的区别是将“ifdef”改为“ifndef"。它的功能是如果标识符未被#define命令定义过则对程序段1进行编译,否则对程序段2进行编译。

第三种

#if 常量表达式

程序段1

#else

程序段2

#endif

3.

#error等其他常用预处理命令

除了上面介绍的之外,C语言还有#error,#line,#pragma等其他常用的预处理命令

(1)#error 指令强制编译程序停止编译,它主要用于程序调试 #error error-message

(2)#line 指令改变__LINE__ 和

__FILE__的内容。__LINE__和__FILE__都是编译程序中预定义的标识符。标识符__LINE__的内容是当前被编译代码行的行号,__FILE__的内容是当前被编译源文件的文件名。

#line number "filename"

(3)#pragma

是编译程序实现时定义的指令,它允许由此向编译程序传入各种命令。例如,一个编译程序可能具有支持跟踪程序执行的选项,此时可以用#pragma语句选择该功能,编译程序忽略其不支持的#pragma选项。使用#pragma预处理命令可提高C源程序对编译程序的可一致性。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值