- 主题:所在的公司编码规范极不习惯
~~~上次未发表的内容~~~
~~~上次未发表的内容~~~
布尔代数里真就是1,假就是0
【 在 l0JQKA (-)__(-) 的大作中提到: 】
: 布尔值代表真假,没有一个规范,必须得要求真为1假为0。
: 【 在 lvsoft 的大作中提到: 】
: : 既然是规范,那我觉得定义true=0,false=-1,比要求true==xxx的问题要严重的多。
: : 这么搞就是蓄意挖坑。
--
FROM 223.104.3.*
if (true) blahblah;
然后不执行,在哪见到的,说出来让大家乐呵乐呵呗?
【 在 l0JQKA (-)__(-) 的大作中提到: 】
: 这几条严格来说都没问题,不知道喷的人什么心态。楼主的语言是C,古老编译器上,不这么写很容易编译通过但运行出错。
: 尤其是第四条,C里面根本就没有boolean,谁知道true/false定义成什么,我就见过true=0,false=-1的。
: 另外,1、2点,不管什么语言,我都会这么写,方便阅读的思维。因为!变量,很容易让人想到变量是个bool值。人类的自然语言自然思维就是如果(变量 不等于 空)这样,而不是如果(非 变量)
: ...................
--
FROM 101.98.83.*
我倒是觉得很严谨,就是读着不习惯,可以接受
也许为了2000的编译器兼容~
【 在 mykeyboard (scheme) 的大作中提到: 】
: 嵌入式系统,主要用C开发
: 规范举例如下:
: 1)判断指针变量是否为空,不能直接用
: ...................
--
FROM 203.86.72.*
那不是错的更严重
lz写的是嵌入式代码,用win32宏?
【 在 Tyo (T3|等待原来苍老了你我|彻底沦为IT民工) 的大作中提到: 】
: 说4有毛病的,提醒你们一下,注意大小写。如果楼主没写错,TRUE FALSE是win32下的宏,不是布尔,是整形1 0
--
FROM 123.123.130.*
我明确地说
4是错的,这不是品味的问题,这就是错的
1.首先,公司的共有宏定义成了true=0,false=-1这种情况不需要讨论
因为这个公司的2b根本就不是编码规范可以解决的问题
如果这个公司执意要这么玩,那我觉得他怎么定编码规范别人都没资格说什么
因为他就是想坑死自己
你还能拯救他吗
2.真正要说的是
项目大了以后,完全有可能有的地方定义了true=1,false=0,另一个地方定义了true=-1,false=0
特别是两个模块都有自己的一套.h的时候
而这个东西,是很容易被忽略的
所以这种情况下,只要两边的宏都符合基本的直觉
那么if (bFlag)就是对的,if (bFlag==TRUE)就是有可能错的
而这个规范本身也是有逻辑的
就是虽然c语言本身没有bool型变量,但是我们可以在规范的层面定义一个布尔型
所有判断的地方都只能填bool表达式,不能用int或者指针自动转换成bool变量
所以if (ptr)不行,必须if (ptr!=NULL)
而if (bFlag)本身就是bool型,所以不需要甚至也不能再和bool常量比较
【 在 adoal (阿豆) 的大作中提到: 】
: 在我印象中见过的各种实现里要么true=1 false=0
: 要么true=-1(二进制全1) false=0
: true=0 false=-1就很奇怪了
: ...................
--
FROM 123.123.130.*
除了第四个,别的没问题
--
FROM 103.37.140.*
齐头砍一刀,齐脚砍一刀,和你不一般高的都是傻逼。
【 在 ColinYu (Colinyu) 的大作中提到: 】
: 前3个一点问题都没有。任何一个想不明白,只能说你搬砖太久了,干的都是体力活
: 第4个没必要
--
修改:flw FROM 27.38.249.*
FROM 27.38.249.*
看起来还好啊,起码算是勉强上道
--
FROM 223.101.70.*
c里面NULL只是一个宏定义,不一定是0,得看你的项目定义,嵌入式系统有定义为-1的,就是0xFFFFFFFF
【 在 mykeyboard () 的大作中提到: 】
: 嵌入式系统,主要用C开发
: 规范举例如下:
: 1)判断指针变量是否为空,不能直接用
: if(ptr) 或者 if(!ptr)
--
FROM 114.249.191.*
如果贵公司可以按照这个规范严格执行,就不要纠结了。
编码规范最重要的是大家都遵守并执行,具体细节上不是这么重要。
有机会再贡献力量改掉它们。
【 在 mykeyboard 的大作中提到: 】
: 嵌入式系统,主要用C开发
: 规范举例如下:
: 1)判断指针变量是否为空,不能直接用
: ...................
--
修改:moles FROM 114.246.100.*
FROM 114.246.100.*