怎么让keil MDK 不把把宏定义给优化掉了

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么让keil MDK 不把把宏定义给优化掉了相关的知识,希望对你有一定的参考价值。

在头文件中定义 #define PCCRAMBASEADDR (0x20000000),然后在C文件中写这条语句,keil MDK编译使用三级优化
if( (*( UINT8 *)(PCCRAMBASEADDR)) == 0x50) && ((*( UINT8 *)(PCCRAMBASEADDR + 1)) == 0x00) )
用反汇编查看,发现这条语句被优化掉了,汇编中没有这条语句的汇编,请问怎样才能不被优化掉

参考技术A 可能是写错了,试试 * ( ( UINT8 *)(PCCRAMBASEADDR) )

要打括号 再对指针引用
参考技术B 定义一个指针,例如p
p=(UINT8 *)pccrambaseaddr;
if((*p==0x50)&&(*(p+1)==0))
你试试这样可以吗?

以上是关于怎么让keil MDK 不把把宏定义给优化掉了的主要内容,如果未能解决你的问题,请参考以下文章

keil mdk中如何确保某一段程序不被优化掉

keil mdk怎样给一个函数固定在某一地址上

keil5里面需要添加宏定义么

keil4宏定义赋值报错

keil mdk 启动程序(汇编语言写的)仿真时没法跟踪。 怎样让它自动跟踪代码? 像C语言一样

Keil MDK 编译器 AC5 和 AC6 优化选项重要内容和区别