相关疑难解决方法(0)

您被迫遵循的最奇怪的编码标准规则是什么?

当我问这个问题时,我几乎总是肯定是的,你应该有编码标准.

您曾被迫遵循的最奇怪的编码标准规则是什么?

而最奇怪的是,我的意思是最有趣,或者最糟糕,或者只是简单的奇怪.

在每个答案中,请提及哪种语言,您的团队规模,以及它对您和您的团队造成的影响.

coding-style

173
推荐指数
72
解决办法
23万
查看次数

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万
查看次数

无限循环 - 顶部还是底部?

本着问题的精神,你的循环测试是在顶部还是底部?:

你使用哪种风格进行无限循环,为什么?

  • 而(真){}
  • do {} while(true);
  • for(;;){}
  • label:...转到标签;

c c++ coding-style

10
推荐指数
6
解决办法
3509
查看次数

发出"while(true)"的编译器警告而不是为"for(;;)"发出一个警告的重点是什么?

当我使用带有"警告级别4"的Visual C++ 9编译C++代码时,如下所示:

while( true ) {
   //loop body with break on certain condition
}
Run Code Online (Sandbox Code Playgroud)

以下内容:

for( ; true; ) {
   //same loop body
}
Run Code Online (Sandbox Code Playgroud)

两者都触发C4127: conditional expression is constant警告,但以下内容:

for( ; ; ) {
   //same loop body
}
Run Code Online (Sandbox Code Playgroud)

编译时没有警告.

为什么会出现这种差异,尤其是第二种和第三种变体之间?

c++ compiler-construction compiler-warnings visual-c++

10
推荐指数
2
解决办法
2667
查看次数