之前做项目都是用keil编译器比较多,也基本上用得很顺手,但是最近又开始用IAR编译器,结果这次真是被它折磨得快要崩溃,现在把问题总结如下:(IAR编译器版本:IAR2.10.4)
-
IAR编译器默认的优化设置一定要注意!这个是之前做的一个项目,也是印象深刻,编译之后在线单步调试时,程序完全不按照正常流程执行,一度还以为时仿真器出了问题。最后才发现原来IAR编译器默认优化选择是中;
-
IAR编译器的memcpy()函数调用的问题!这个是今天调程序发现的,本来想用内存复制的方式将一个浮点数复制到uchar型数组中,编译完全正确,也没有报错或者是警告,结果运行起来就跑飞了,CAN通信无法正常工作,最后是用联合体的方法实现的;
-
IAR编译器的强制类型转换!真的搞不清楚IAR的强制转换规则?感觉真的是有点莫名其妙。例子如下:
int a;
int b;
int c;
u8 d;
u8 e[4];
d= a+b; 不报错,但是跑飞
d=(u8)(a+b);不报错,但是跑飞
e[0] = a+b; 不报错,运行正常
c = a+b;
e[0] = c; 不报错,运行正常
-
IAR编译器在线调试时,明明定义的int型变量,为什么在watch中却显示的是浮点值!我确定只定义了一个int型!WHY!
-
IAR的函数仅定义未