相关疑难解决方法(0)

为什么在宏中使用明显无意义的do-while和if-else语句?

在许多C/C++宏中,我看到宏的代码包含在看似无意义的do while循环中.这是一些例子.

#define FOO(X) do { f(X); g(X); } while (0)
#define FOO(X) if (1) { f(X); g(X); } else
Run Code Online (Sandbox Code Playgroud)

我看不出它do while在做什么.为什么不在没有它的情况下写这个?

#define FOO(X) f(X); g(X)
Run Code Online (Sandbox Code Playgroud)

c c++ c++-faq c-preprocessor

758
推荐指数
8
解决办法
9万
查看次数

做{...}而(0) - 有什么好处?

可能重复:
为什么在C/C++宏中有时会出现无意义的do/while和if/else语句?

我已经看了十多年了.我一直在努力思考它有什么好处.因为我主要在#defines中看到它,所以我认为它对内部范围变量声明和使用中断(而不是gotos)有好处.

对其他事情有好处吗?你用它吗?

c loops

315
推荐指数
4
解决办法
14万
查看次数

标签 统计

c ×2

c++ ×1

c++-faq ×1

c-preprocessor ×1

loops ×1