相关疑难解决方法(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万
查看次数

在C中使用null语句

null语句的典型用法是什么

;
Run Code Online (Sandbox Code Playgroud)

在C?

我知道它基本上用于跳过编译器所期望的表达式,但是在这里我只对这种用例的实际例子感兴趣.

c

24
推荐指数
4
解决办法
1万
查看次数

MSVC相当于__attribute __((warn_unused_result))?

我发现__attribute__ ((warn_unused_result))作为一种鼓励开发人员不要忽略函数返回的错误代码的方法非常有用,但是我需要将它与MSVC以及gcc和gcc兼容的编译器(如ICC)一起使用.Microsoft Visual Studio C/C++编译器是否具有等效机制?(到目前为止,我已经尝试过没有运气的MSDN.)

c c++ gcc gcc-warning visual-c++

23
推荐指数
3
解决办法
8492
查看次数

16
推荐指数
7
解决办法
9409
查看次数