在最近的项目中遇到一个奇葩的问题,在debug时发现if语句里面的条件全都为真,即是if(1) 却不执行if语句的程序代码段,结果被这个问题折磨了一下午,后来经过大佬们的指点得知原来是因为编译器对变量进行了优化 所以导致了该变量的值并不是最新的,二我们在debug的时候看到的却是变量的最新的值。所以导致了我们看到的和程序所执行的步骤不一样。
解决办法:
在变量的定义处加上__IO关键字,__IO关键字也即是c语言中我们很少使用到的关键字 volatile即可完美解决问题。
在最近的项目中遇到一个奇葩的问题,在debug时发现if语句里面的条件全都为真,即是if(1) 却不执行if语句的程序代码段,结果被这个问题折磨了一下午,后来经过大佬们的指点得知原来是因为编译器对变量进行了优化 所以导致了该变量的值并不是最新的,二我们在debug的时候看到的却是变量的最新的值。所以导致了我们看到的和程序所执行的步骤不一样。
解决办法:
在变量的定义处加上__IO关键字,__IO关键字也即是c语言中我们很少使用到的关键字 volatile即可完美解决问题。