关于define的问题
问下我在看资料的时候看到一条语句是这么写的:
#define SI32_RTC_B_CONFIG_RUN_START_U32 \
(SI32_RTC_B_CONFIG_RUN_START_VALUE << SI32_RTC_B_CONFIG_RUN_SHIFT)
其中:#define SI32_RTC_B_CONFIG_RUN_START_VALUE 1
#define SI32_RTC_B_CONFIG_RUN_SHIFT 1
我想请问下一般这么些有什么用?我觉得没有任何作用啊,还不如写成:
#define SI32_RTC_B_CONFIG_RUN_START_U32 1;
[解决办法]
编码规则上有一个叫可读性的东西。
其实这两种写法,如果都正确的话,那么在编译器的处理来看,都是一样的
立即数在可读性这个方面有一个专称:魔数。
大概意思是,数字本身并不能直接表达作者的意图,让读代码的人不能很好的理解作者意图
为了增加可读性,在不损失代码性能的情况下,尽量用宏,用常量,用变量名
更深层次的LZ可以看一下《代码大全2》或网上可以下得到的《华为编码规范》等等相关的书籍
[解决办法]
宏定义一般是为了在更改代码时更加方便,仅更改一个定义就可以了。
你所说的这些定义,值是可能更改的。当你在调试中要频繁地改变这些值的时候,就体会到他这样写的用意了。
[解决办法]
为了方便可读性及可移植性
[解决办法]
为了方便移植和统一修改