相关疑难解决方法(0)

C/C++:如何使用do-while(0); 构造没有编译器警告,如C4127?

由于本答案中描述的原因,我经常在我的#defines中使用do-while(0)构造.此外,我正在尝试使用尽可能高的编译器警告级别来捕获更多潜在问题,并使我的代码更加健壮和跨平台.所以我通常使用-Wallgcc和/WallMSVC.

不幸的是,MSVC抱怨do-while(0)构造:

foo.c(36) : warning C4127: conditional expression is constant
Run Code Online (Sandbox Code Playgroud)

我应该怎么做这个警告?

只是为所有文件全局禁用它?对我来说这似乎不是一个好主意.

c c++ macros compiler-warnings visual-c++

44
推荐指数
5
解决办法
1万
查看次数

"for(;;)"无限循环的习惯用法是否正确归因于PDP-11 C编译器?

最近我发现这篇文章声称偏爱无限循环的想法来for(;;)while(1),因为最初在PDP-11上可用的C编译器生成了额外的机器指令while(1).

顺便说一下,即使Visual C++警告也倾向于前者.

这种for(;;)成语的归属有多现实?

c c++ compiler-construction history pdp-11

10
推荐指数
3
解决办法
888
查看次数