您好,在许多C宏程序员中使用特殊的单循环,例如:
#define do_something(a) do { execute(a); count(a); } while(0)
Run Code Online (Sandbox Code Playgroud)
因为你想在循环中执行这个宏而你不使用"{}".为什么他们不使用简单的块呢?我的意思是,不是
#define do_something(a) { execute(a); count(a); }
Run Code Online (Sandbox Code Playgroud)
有同样的效果?
因为
if( something ) do_something(a);
else something_else();
Run Code Online (Sandbox Code Playgroud)
扩展为:
if( something ) do { execute(a); count(a); } while(0);
else something_else();
Run Code Online (Sandbox Code Playgroud)
这是正确的,但是:
if( something ) { execute(a); cout(a); };
else something_else();
Run Code Online (Sandbox Code Playgroud)
不正确(多余的";").