在许多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) null语句的典型用法是什么
;
Run Code Online (Sandbox Code Playgroud)
在C?
我知道它基本上用于跳过编译器所期望的表达式,但是在这里我只对这种用例的实际例子感兴趣.
我发现__attribute__ ((warn_unused_result))作为一种鼓励开发人员不要忽略函数返回的错误代码的方法非常有用,但是我需要将它与MSVC以及gcc和gcc兼容的编译器(如ICC)一起使用.Microsoft Visual Studio C/C++编译器是否具有等效机制?(到目前为止,我已经尝试过没有运气的MSDN.)
int main()
{
int var = 0;; // Typo which compiles just fine
}
Run Code Online (Sandbox Code Playgroud)