文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>宏定义

宏定义

时间:2010-10-12  来源:huxuelin1989

一、定义一个常量 #define PI 3.1415
二、定义一个表达式 #define MAX(a, b) ((a) > (b) ? (a) : (b))
三、定义多条语句
第一种:#define EXCH(a, b) a = a + b; b = a - b; a = a - b;
从语法上说当然没错,但用到if()语句中时可能会出问题,如:

if(表达式)
        EXCH(a, b)


看起来好像是如果if()中的表达式为TRUE,则执行EXCH(a, b),但实际会变成:

if(表达式)
        a = a + b;
b = a - b;
a = a - b


这显然达不到想要的效果。
第二种: #define EXCH(a, b) { a = a + b; b = a - b; a = a - b; }
这种定义在调用时既没有返回值,又不能在调用后加分号,如:

EXCH(a, b);


这会被解释为:

{ a = a + b; b = a - b; a = a - b; };


这显然语法上就不正确。 但如果写成

EXCH(a, b)


这虽然正确, 但作为一条语句没有分号总感觉怪怪的, 所以出现了第三种情况。
第三种: #define EXCH(a, b) do { a = a + b; b = a - b; a = a - b; } while(0)

调用:

EXCH(a, b);


解释为:

do { a = a + b; b = a - b; a = a - b; } while(0);


第四种: #define EXCH(a, b) ({ a = a + b; b = a - b; a = a - b; })
这种在调用时有返回值,它的适用情况是放在if、while等的条件判断中,如:

if(EXCH(a, b))
        语句


它的返回值是最后一条语句的值。
第五种: #define EXCH(a, b) ( a = a + b, b = a - b, a = a - b )
这种写法也是正确的,但作为多条语句,如果用逗号隔开总觉得怪怪的,所以这种写法不常用。
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载