1.编译器优化的问题
定义的局部变量如果后续没有用,会被编译器优化掉,如:
{
u32 va = 100;
va = 200;
//些处放断点 ,查看一下va的值,会发现根本不对。
}
如何避免优化?
{
__IO u32 va = 100;
va = 200;
//此处放断点,看一下值已经正常了。
}
__I 、__O 、 __IO的宏定义如下:
2. char类型会被当成unsigned char, 导致计算结果出错
{
char va = -40;
//这里放断点,看一下va的值 如下: