1.先分享一个学习的时候比较少见,但工作时却极其普遍的一个小技巧。
我们在定义一个flag的多种状态时,常常会使用0、1、2、3等等依次代表每种状态值,但直接使用数字毫无疑问可读性不高,因此需要给每个数字定义一个宏,这一点是正确的。但假如状态很多,我以后功能变化时需要往里面添加一个宏,而且考虑到逻辑性,需要把新添加的宏插入中间位置,这时候修改起来就比较麻烦了,你得将后面得宏依次修改。
例如,定义宏如下:
#define a 1
#define b 2
#define d 3
#define e 4
现在我想在b后面插一个#define c 3,那就得把后面d和e都修改了,当定义的宏多达几十个的时候,会非常麻烦,这种情况下可以使用枚举来代替宏。
enum{
a,
b,
d
}
这样你往中间插入c就很方便了。当然缺陷也有,就是调试的时候你得去数对应数字是哪一个宏。因为大型项目中很容易出现这种定义许多宏的情况,因此在实际工作中这种技巧很常见。
我们在定义一个flag的多种状态时,常常会使用0、1、2、3等等依次代表每种状态值,但直接使用数字毫无疑问可读性不高,因此需要给每个数字定义一个宏,这一点是正确的。但假如状态很多,我以后功能变化时需要往里面添加一个宏,而且考虑到逻辑性,需要把新添加的宏插入中间位置,这时候修改起来就比较麻烦了,你得将后面得宏依次修改。
例如,定义宏如下:
#define a 1
#define b 2
#define d 3
#define e 4
现在我想在b后面插一个#define c 3,那就得把后面d和e都修改了,当定义的宏多达几十个的时候,会非常麻烦,这种情况下可以使用枚举来代替宏。
enum{
a,
b,
d
}
这样你往中间插入c就很方便了。当然缺陷也有,就是调试的时候你得去数对应数字是哪一个宏。因为大型项目中很容易出现这种定义许多宏的情况,因此在实际工作中这种技巧很常见。