lintcode刷题:面试总结 do while(0)

来源:互联网 发布:成考自考和网络教育 编辑:程序博客网 时间:2024/06/06 02:06

今天面试的时候被问了一个问题:

在宏定义的时候,为什么使用do while(0)

在读代码的时候遇到过这种情况,当时反应了半天,

没想出来是什么原因。其实和{}作用域的作用好像一样。

好像主要的作用是逻辑错误?

例如

define FUNC(a) /

    do { /

        funca(a) /

        funcb(a) /

    } while(0)

当执行if...else...时,可能会出现

if (a < 100) 

    FUNC(a);

else 

    FUNC(b);

在写代码的过程中,习惯性的在行尾添加;

展开后

if (a<100)

    do {

        FUNC(a);

        FUNC(b);

    };

else 

    FUNC(b);

编译出错。




原创粉丝点击