能力值:
( LV3,RANK:20 )
|
-
-
2 楼
2 有没有办法让 warning C4553 变成错误消息,非警告?
#pragma warning( error : 4553 )
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
谢谢
#pragma warning( error : 4553 ) 非常好
现在就差 if(a=1) ,把他报出来就好了
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
可以
VS2010
项目属性 代码分析
打勾启动分析
选所有规则。
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
看来是没戏了,只能自己注意了
|
能力值:
( LV3,RANK:20 )
|
-
-
6 楼
if(a=1)是合法形式,如何怕手误将if(a==1)写成if(a=1),有一个不方便的办法,就是要求这种形式写成if(1==a)。
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
可以
VS2010
项目属性 代码分析
打勾启动分析
选所有规则。
警告 1 warning C6282: 运算符不正确: 在 Boolean 上下文中执行了常量赋值。应考虑改用“==”
抱歉刚才一下忘了代码分析这东西了
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
谢谢 半道出家的
以前看别人代码不理解为什么写成if(1==a) 觉得怪难看的,现在才理解过来
这个也是个非常不错的办法,
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
if(1 == a)这种方法很好,
只是风格看起来比较怪异。
习惯了就好。
|
能力值:
( LV5,RANK:60 )
|
-
-
10 楼
的确是习惯了就好。我现在看到if (a == 1)反而觉得很怪异
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
直接将警告等级调到最高(vs2005是/W4选项),对if(a=1)会报一个警告“warning C4706: assignment within conditional expression”。
将警告视为错误可以用#pragma单独设置,也可以在添加/WX选项将所有警告视为错误。
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
1==a和a==1的asm代码是一样的么?cmp a,1?
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
编码习惯问题
|
能力值:
(RANK:1060 )
|
-
-
14 楼
Here's a dirty but portable trick you can use to force a compile-time error:
struct not_a_bool {};
template<typename T>
not_a_bool ERROR_CONDITIONAL_EXPRESSION_IS_NOT_BOOL(T value) { return not_a_bool(); }
bool ERROR_CONDITIONAL_EXPRESSION_IS_NOT_BOOL(bool value) { return value; }
#define if(x) if(::ERROR_CONDITIONAL_EXPRESSION_IS_NOT_BOOL(x))
#define while(x) while(::ERROR_CONDITIONAL_EXPRESSION_IS_NOT_BOOL(x))
|
能力值:
( LV2,RANK:10 )
|
-
-
15 楼
vc6 w4级可以检测出
|
能力值:
( LV5,RANK:60 )
|
-
-
16 楼
1 == a这种写法的目的是当写成 1 = a的时候让编译器报错。
|
|
|