21ic电子技术开发论坛
标题:
以下二种形式来定义常数有区别吗 ?
[打印本页]
作者:
hwrhys
时间:
2012-10-15 21:39
标题:
以下二种形式来定义常数有区别吗 ?
以下二种形式来定义常数有区别吗
??????
#define
FM25V20_WREN
0b00000110
,
这是定义
#define
FM25V20_WREN
0b00000110
,
这是定义一个符号代表一个常量,
Const char
RS485_read_command = 0xaa;
这二种形式有什么区别呢 ??? 请老师们给予解答.
这二种形式都可以用来定义一个常数吧 ?? 区别何在?
作者:
hwrhys
时间:
2012-10-15 21:42
以下二种形式来定义常数有区别吗 ??????
#define FM25V20_WREN 0b00000110, 这是定义一个符号代表一个常量,
Const char RS485_read_command = 0xaa;
书写的格式搞串行了. 重写一遍.
作者:
virtualtryon
时间:
2012-10-15 21:53
#define FM25V20_WREN 0b00000110这个是宏定义,是给编译器看的,编译器会直接用定义的后面数值替换,我觉得可以理解为重命令而己,汇编是立即数寻址,值不能改,不占任何ROM或者RAM空间。
Const char RS485_read_command = 0xaa; 是定义常量,是将变量存入ROM空间,值不用改,占用ROM空间,汇编是通过查表取数值。
作者:
Ryanhsiung
时间:
2012-10-16 08:00
LS说的是对的!!!
#define FM25V20_WREN 0b00000110
在预编译代码中相应的 FM25V20_WREN 就会自动替换成0b00000110
而RS485_read_command 则是做为一个常量来处理的
作者:
hwrhys
时间:
2012-10-17 17:07
得到了帮助,表示衷心感谢!!!!
作者:
yewuyi
时间:
2012-10-18 16:17
第一种叫着宏定义,使用这个宏定义了之后,就是一种简单的替代的关系,也就是用前面的字符代替后面的数值,这个定义不会在RAM或者ROM开辟任何空间来存放这个数值。
第二种定义的是变量,如果不考虑优化的作用,那么定义了其之后,则会在RAM或者ROM中开辟一个存放空间,在这里使用了CONST,对于PIC来说,将会在ROM中占用一些空间来保存这个常数变量值,但在其它芯片中,使用CONST也可能是在RAM中生成一个常数变量,则还要看是否有其他修饰关键字来指定。
属于宏定义和变量、常量定义的区别而已,基本的C语言知识,自己买本C语言书都会讲的很清楚。
欢迎光临 21ic电子技术开发论坛 (https://bbs.21ic.com/)
Powered by Discuz! X3.5