请教以下代码的问题

[复制链接]
2473|7
 楼主| xzy568 发表于 2011-2-19 11:57 | 显示全部楼层 |阅读模式
在C51下这样写不会报错
code unsigned char AA[2]={2,2};
code unsigned char AB[2] _at_ 0xf000;
但这样写会报错,请问是为什么?
code unsigned char AC[2]={2,2} _at_ 0xf100;
ShakaLeo 发表于 2011-2-19 12:57 | 显示全部楼层
这跟编译器的设计有关系。报错的原因很可能是定位绝对地址的变量不能有初值。
 楼主| xzy568 发表于 2011-2-19 13:10 | 显示全部楼层
我也是这样认为的,我用的是keil UV4
编译器干嘛不支持这样的变量定义方式啊
sxhhhjicbb 发表于 2011-2-20 00:15 | 显示全部楼层
学习了,我没这样用过。
johnwjl 发表于 2011-2-20 11:12 | 显示全部楼层
LZ所述问题,我上周刚碰到,确实如此。
liam2011 发表于 2011-2-20 11:17 | 显示全部楼层
嗯 二楼说的对原因很可能是定位绝对地址的变量不能有初值。
johnwjl 发表于 2011-2-20 11:17 | 显示全部楼层
以下这段话,可以回答你的问题:
The following restrictions apply to absolute variable location using the _at_ keyword:
1.Absolute variables cannot be initialized.
2.Functions may not be located at an absolute address.
3.Bit variables may not be located at an absolute address.
 楼主| xzy568 发表于 2011-2-21 08:27 | 显示全部楼层
楼上说得对啊,就是不明白不能这个做的原因是不是跟编译原理有关系啊?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

284

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部