语法tips4(宏定义函数)

某些文章表示宏函数对文件结构造成了影响,不是很推荐宏函数,但是宏函数不需要开函数堆栈却是个不折不扣的优势。

关键是宏函数还是比较多见的:

①:最常见宏函数

 #define MAX(a,b) ((a>b)?a:b)

 #define MIN(a,b) ((a<b)?a:b)

②:只能用宏函数,主要优点在于宏定义的函数传入参数时不挑参数类型,不需要参数绝对匹配。

用于为不明确类型malloc空间

#define MALLOC(n,type) ((type*)malloc(n * sizeof(type)))

用于比较不同类型数据大小,比如float a 和 int b比较大小

#define MAX(a,b) ((a>b)?a:b) 

多行宏函数注意点:

①:函数体未结束时换行需要加上“\”

#define FUN(a,b)\

{\

a++;\

b++;\

}

②:若需要返回值,则需要将函数体“()”扩起,且返回值就是最后一行函数的结果,如下即返回a+b的数值

#define FUN(a,b)\

({\

a++;\

b++;\

a+b;\

})

宏也可以是多行指令:

但需要花括号包住,且建议用do {} while(0)包住,内核中很多都是这样写的,不要问为什么,我希望入伍;

ep:

#define DUMP_WRITE(addr, nr, foffset)    \
    do { if (!dump_write(file, (addr), (nr))) return 0; *foffset += (nr); } while(0)

ep:

#define PULSE_HIGH      { *REdat |= 0x4000; *RFdat |= 0x0002; }       //实测这样ok

#define PULSE_HIGH do { *REdat |= 0x4000; *RFdat |= 0x0002; } while (0)     //但还是推荐这样包住

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

aazhoukeaa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值