c语言 ifdef,C语言特定字麻烦解释下?

本文详细介绍了C语言中的预处理指令,包括#define用于宏定义,#include用于文件包含,以及条件编译命令如#ifdef、 ifndef等。这些指令在编译前处理源代码,实现宏替换、文件整合和条件编译等功能,对于程序的可维护性和移植性至关重要。
摘要由CSDN通过智能技术生成

LZ所说的这些以“#”号开头的都是C语言中的预处理命令。一般都放在源文件的前面,是在对源程序正式编译前由预处理程序完成的。

所谓预处理是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所作的工作。预处理是C语言的一个重要功能, 它由预处理程序负责完成。

当对一个源文件进行编译时, 系统将自动引用预处理程序对源程序中的预处理部分作处理, 处理完毕自动进入对源程序的编译。

具体解释如下:

#define:宏定义命令,就是用一个标识符来表示一个字符串。

例如 #define MAX 100 那么,在代码中就可以使用标识符MAX来代替100这个具体的值(这个叫宏代换,宏展开),如果想修改,直接修改定义处的值,而代码不必改,便于程序的修改。

#include:文件包含命令,一个C程序可能需要一些函数原型的声明文件,或者多人开发的源程序,包含命令就是将这些文件内容引入到本源文件中,形成一个完整的C项目程序。例如 #include"math。h" 就是将数学公式函数的头文件包含进来,代码中才能调用一些数学公式。

#ifdef #else #endif #ifndef #undef:这些是相到关联的条件编译命令。可以按不同的条件去编译不同的程序部分,因而产生不同的目标代码文件。 这对于程序的移植和调试是很有用的。

例如:

ifdef 标识符

程序段1

#else

程序段2

#endif

功能是,如果标识符已被 #define命令定义过则对程序段1进行编译;否则对程序段2进行编译。

如果没有程序段2(为空),则#else可以省略。

#ifndef 标识符

程序段1

#else

程序段2

#endif

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

这与第一种形式的功能正相反。

#line:

改变_LINE_ 与_ F I L E _的内容,它们是在编译程序中预先定义的标识符。命令的基本形式如下:

# line number["filename"]

其中的数字为任何正整数,可选的文件名为任意有效文件标识符。

行号为源程序中当前行号,文件名为源文件的名字。命令#line主要用于调试及其它特殊应用。

例如,下面说明行计数从100开始;printf()语句显示数102,因为它是语句#line 100后的第3行。

#line 100 /* 初始化行计数器* /

main ( ) /* 行号100 */

{ /* 行号101 */

printf("%d\n",_line_) ; /* 行号102 */

}

全部

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值