C语言中的宏定义如何使用?

Python08

C语言中的宏定义如何使用?,第1张

定义又称为宏代换、宏替换,简称"宏"。

格式:

#define 标识符 字符串

其中的标识符就是所谓的符号常量,也称为"宏名"。

预处理(预编译)工作也叫做宏展开:将宏名替换为字符串。

掌握"宏"概念的关键是"换"。一切以换为前提、做任何事情之前先要换,准确理解之前就要"换"。

即在对相关命令或语句的含义和功能作具体分析之前就要换:

例:

#define Pi 3.1415926

把程序中出现的Pi全部换成3.1415926

1、简单的define定义#define MAXTIME 1000

一个简单的MAXTIME就定义好了,它代表1000,如果在程序里面写if(i<MAXTIME){.........}

编译器在处理这个代码之前会对MAXTIME进行处理替换为1000。

这样的定义看起来类似于普通的常量定义CONST,但也有着不同,因为define的定义更像是简单的文本替换,而不是作为一个量来使用,这个问题在下面反映的尤为突出。

2、define的“函数定义”

define可以像函数那样接受一些参数,#define max(x,y) (x)>(y)?(x):(y);

这个定义就将返回两个数中较大的那个,看到了吗?因为这个“函数”没有类型检查,就好像一个函数模板似的,当然,它绝对没有模板那么安全就是了。可以作为一个简单的模板来使用而已。

C语言中无参宏定义的一般形式:

#define 宏名 字符串,其中的“#”表示这是一条预处理命令。凡是以“#”开头的均为预处理命令。“define”为宏定义命令。“标识符”为所定义的宏名。“字符串”可以是常数、表达式、格式串等。

例如: #define M (a+b) 它的作用是指定标识符M来代替表达式(a+b)。在编写源程序时,所有的(a+b)都可由M代替,而对源程序作编译时,将先由预处理程序进行宏代换,即用(a+b)表达式去置换所有的宏名M,然后再进行编译。

一、答案

#define ABS(x) ( (x)>0?(x):-(x) )

使用上述命令就可以使用宏定义绝对值。

二、关于宏定义语法说明

1、定义宏的语法

#define  标识符  常量   //注意, 最后没有分号

2、语法说明

#define 的功能是将标识符定义为其后的常量。一经定义,程序中就可以直接用标识符来表示这个常量。宏定义看似和变量定义一样,但是完全不是一个概念。

要区分开!变量名表示的是一个变量,但宏名表示的是一个常量。可以给变量赋值,但绝不能给常量赋值。

宏所表示的常量可以是数字、字符、字符串、表达式。其中最常用的是数字。

三、关于ABS函数定义说明

1、语法定义

int abs(int x)

其中x表示要求绝对值的数。

2、语法解释

求整数的绝对值。需要引用头文件math.h 或者 stdlib.h

3、特别注意

x必须是正整数或者正负数。不可以是浮点数类型。

扩展资料

一、C语言宏的定义

采用命令 #define 来定义宏。该命令允许把一个名称指定成任何所需的文本。

例如一个常量值或者一条语句。在定义了宏之后,无论宏名称出现在源代码的何处,预处理器都会把它用定义时指定的文本替换掉。

二、没有参数的宏

1、语法

#define 宏名称 替换文本

其中“替换文本”前面和后面的空格符不属于替换文本中的内容。替代文本本身也可以为空。

2、实例

#define TITLE "*** Examples of Macros Without Parameters ***"

#define BUFFER_SIZE (4 * 512)

#define RANDOM (-1.0 + 2.0*(double)rand() / RAND_MAX)

三、带参数的宏

1、定义

定义具有形式参数(简称“形参”)的宏。当预处理器展开这类宏时,它先使用调用宏时指定的实际参数(简称“实参”)取代替换文本中对应的形参。带有形参的宏通常也称为类函数宏(function-like macro)。

2、语法

#define 宏名称( [形参列表] ) 替换文本

#define 宏名称( [形参列表 ,] ... ) 替换文本