免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: accelerator
打印 上一主题 下一主题

do-while(0)的宏定义似乎没存在的必要. [复制链接]

论坛徽章:
0
11 [报告]
发表于 2007-06-22 12:24 |只看该作者
问个问题:do-while(0)开不开编译器优化相同吗?

论坛徽章:
0
12 [报告]
发表于 2007-06-22 12:25 |只看该作者
原帖由 bilbo0214 于 2007-6-22 12:23 发表
问个问题:do-while(0)开不开编译器优化相同吗?


没有开

论坛徽章:
0
13 [报告]
发表于 2007-06-22 13:17 |只看该作者
原帖由 flw 于 2007-6-22 11:28 发表
但是 ({}) 是非标准的。不知道除 gcc 之外还有谁支持它?


这个是针对c 还是针对c++?
c++中有很多为了说明构造函数的例子都是用 { } 来说举例,例如:


  1. #include <iostream>

  2. using namespace std;

  3. class A
  4. {
  5.     public:
  6.         A()
  7.         {
  8.             cout << "A" << endl;
  9.         }
  10.         ~A()
  11.         {
  12.             cout << "~A" << endl;
  13.         }
  14. };

  15. class B
  16. {
  17.     public:
  18.         B()
  19.         {
  20.             cout << "B" << endl;
  21.         }
  22.         ~B()
  23.         {
  24.             cout << "~B" << endl;
  25.         }

  26. };

  27. B b;

  28. int main(int argc, char** argv)
  29. {
  30.     cout << "main" << endl;
  31.     {
  32.         A a;
  33.     }
  34.     cout << "end main" << endl;
  35.     return 0;   
  36. }
复制代码



我刚才特地找了个VC 测了一下,没问题呀!

论坛徽章:
0
14 [报告]
发表于 2007-06-22 13:24 |只看该作者
原帖由 antonym55 于 2007-6-22 13:17 发表


这个是针对c 还是针对c++?
c++中有很多为了说明构造函数的例子都是用 { } 来说举例,例如:

[code]
#include <iostream>

using namespace std;

class A
{
    public:
        A()
        {
            co ...


你这个例子跟人家的说法好像没什么关系

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
15 [报告]
发表于 2007-06-22 13:24 |只看该作者
我们说的是 ({}),不是 {}

论坛徽章:
0
16 [报告]
发表于 2007-06-22 13:31 |只看该作者
原帖由 flw 于 2007-6-22 13:24 发表
我们说的是 ({}),不是 {}


那是我搞错了

论坛徽章:
0
17 [报告]
发表于 2007-06-22 15:07 |只看该作者
8.0 ({}) 通过了.

论坛徽章:
0
18 [报告]
发表于 2007-06-22 19:54 |只看该作者
呵呵,我第一反应是编译器一下就把while(0)检查出来了,第二反应是这个东西不是标准的。

论坛徽章:
2
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11
19 [报告]
发表于 2007-06-22 20:19 |只看该作者
do{}while(0)
一切都好,就是有个负作用:vc6.0编译时打开warning4会出更警告消息。
当然如果不理会该警告也不会有什么问题,就是感觉不爽。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
20 [报告]
发表于 2007-06-22 20:21 |只看该作者
原帖由 cobras 于 2007-6-22 20:19 发表
do{}while(0)
一切都好,就是有个负作用:vc6.0编译时打开warning4会出更警告消息。
当然如果不理会该警告也不会有什么问题,就是感觉不爽。

可以关掉。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP