有关 long型变量在IAR环境中的运算问题

2020-01-17 19:12发布

程序中用到的四个变量是这样定义的
long ADC_DATA;
uint8_t Result1=0x00;
uint8_t Result2=0x00;
uint8_t Result3=0x00;

有条语句   ADC_DATA = Result1*65536+Result2*256+Result3;
这样编译没问题,但是把上面的语句改成  ADC_DATA = Result1*65536+Result2*256+Result3-9900;后就编译报错了

提示
Error[e133]: The output format intel-extended cannot handle multiple address spaces. Use format variants (-y -O) to specify which  
address space is wanted
Error while running Linker

请各位路过的朋友帮忙看看
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
culk2008
1楼-- · 2020-01-17 22:35
自己顶一下
zhugean
2楼-- · 2020-01-17 22:47
ADC_DATA = (long)Result1*65536+(long)Result2*256+Result3
foxcase
3楼-- · 2020-01-18 03:29
类型转换不对
leafstamen
4楼-- · 2020-01-18 06:22
 精彩回答 2  元偷偷看……
culk2008
5楼-- · 2020-01-18 07:29
foxcase 发表于 2016-4-8 16:13
类型转换不对

我觉得不是,因为ADC_DATA = (long)(Result1*65536+Result2*256+Result3);我这样写的时候编译能通过
ADC_DATA = (long)(Result1*65536+Result2*256+Result3)-9900;改成这样还是不行
culk2008
6楼-- · 2020-01-18 11:06
leafstamen 发表于 2016-4-8 17:16
uint8_t Result[4];
ADC_DATA =*((unsigned long*)Result)-9900;

不行啊 ,还是和之前的现象一样

一周热门 更多>