宏函数

来源:互联网 发布:最终幻想14神优化 编辑:程序博客网 时间:2024/06/04 18:15

一 .宏的理解

1.      #define 机制包括了⼀个规定,允许把参数替换到⽂本中,宏只是实现一个简单的文本替换功能。

2.      宏的定义

#definename( parament-list ) stuff

其中neme是宏名,一般大写;( parament-list )是参数列表,注意该参数列表的左括号一定要和name紧邻着,不然会出现错误;stuff和右括号之间有一个空格,stuff是宏函数的具体实现,一般会出现参数列表里面的内容。

二 . 例题和使用注意

1.  参数加括号

写一个简单的计算平方的宏函数

#define SQUARE(x)x*x

 

此时我们在主函数中使用这个宏函数时,例如SQUARE(2);得到的结果是4,这一点显而易见。但是如果我们想得到3+2的平方,它得到的结果是不是我们想要的呢,如:SQUARE(3+2);分析一下,我们要始终注意宏函数是简单的文本替换,我们输入上述语句,得到的执行语句实际上是3+2*3+2结果是11。

使用注意:在写宏函数的具体实现时,在每个参数外加上(),这样就可以避免上述问题,#define SQUARE(x) (x)*(x),再次计算3+2的平方时是这样替换的,(3+2)*(3+2);得到的结果就是25。

2.  执行语句加括号

解决了上面的问题,我们的宏函数还是存在问题的,我在上面的基础之上再次调用一下,定义宏函数

#define SQUARE(x)(x)+(x)

 

使用宏函数,我想计算3+2的二倍之后的结果在乘以10,以我们的习惯会通过如下方式进行调用,10*SQUARE(3+2),乍一看这个结果是100,但实际是不是呢。注意宏函数时简单的文本替换,替换后的执行结果是这样的,10*(3+2)+(3+2),结果是55。

使用注意:写宏函数时,不光在参数外加括号,还注意适当的在整个执行语句外加括号。

(因时间关系,关于宏函数还有其他的注意是事项,以后再做补充)

0 0
原创粉丝点击