do....while(0),编译器会自动优化
2009-07-05 10:10
323 查看
do
{
....
}while(0)
#define foo(params) /
do{ /
//instructions /
}while(0)
为什么要用其do...while(0)的根本愿意在于你的#define 中超过两条表达式(包括两条)以上,下面的例子如果你的#define只有一条,那do...while(0)就没有意义了~~
if(x = 1)
foo(x);
else
...
其实编译器并不会增加更多的指令,起初我认为可能会增加额外的指令,没想到C编译器竟然是自动对条件0的代码进行过优化的。
请看来在c-faq的解释。
http://c-faq.com/cpp/multistmt.html
{
....
}while(0)
#define foo(params) /
do{ /
//instructions /
}while(0)
为什么要用其do...while(0)的根本愿意在于你的#define 中超过两条表达式(包括两条)以上,下面的例子如果你的#define只有一条,那do...while(0)就没有意义了~~
if(x = 1)
foo(x);
else
...
其实编译器并不会增加更多的指令,起初我认为可能会增加额外的指令,没想到C编译器竟然是自动对条件0的代码进行过优化的。
请看来在c-faq的解释。
http://c-faq.com/cpp/multistmt.html
相关文章推荐
- 条款6:若不想使用编译器自动生成的函数,就该明确拒绝(Explicity disallow the use of compiler-generated functions you do not want)
- Item5: Explicitly disallow the use of compiler-generated functions you do not want--若不想使用编译器自动生成的函数,就该明确拒绝
- 编译器自动优化
- 首次独立完成文件拷贝操作,【do{}while();】 及拷贝时间待优化
- 编译器自动优化导致代码可以先后写的问题
- 自动生成硬件优化内核:陈天奇等人发布深度学习编译器TVM
- 条款06:若不想使用编译器自动生成的函数,就该明确拒绝(Explicitly disallow the use of compiler-generated you do not want.)
- 编译器自动优化——为什么我的C++编译器不调用拷贝构造函数了?
- 编译静态库时,如何让编译器自动优化掉未使用的函数?
- javasavacript 递归优化,递归变while
- 循环与递归--不使用if,while,for,do—while语句来输出所有比已知数N小的自然数
- do{...}while(0)的意义和用法
- C语言中while与do-while的介绍与注意事项
- WEB项目构建优化之自动清除CSS中的图片缓存
- 编译器优化 volatile
- 提交订单系统自动发送邮件到收件人邮箱优化(邮件内容信息以月为单位)
- 提交订单系统自动发送邮件到收件人邮箱优化(邮件正文内容为当天数据,附件内容为当月数据)
- VC++编译器对整数除法的优化
- 若不想使用编译器自动生成的函数,应该明确拒绝
- ECshop网点程序优化-自动生成类目页Keywords、Desciption Meta