在我的代码中,我使用了一个宏,它应该生成一个日志条目,或者它不应该根据一些编译标志:
#ifdef SOMETHING
#define LOG(a) printf ("%s", a)
#else
#define LOG(a) while (0) {}
#endif
Run Code Online (Sandbox Code Playgroud)
这段代码运行良好,但是当我查看 Internet 时,我只看到有人在使用
#define LOG(a) do {} while (0)
Run Code Online (Sandbox Code Playgroud)
代替
#define LOG(a) while (0) {}
Run Code Online (Sandbox Code Playgroud)
这两种方法等价吗?我应该更喜欢一个吗?