问题描述:源文件定义全局变量gData(结构体变量成员),主函数中调用一个子函数function(gData),并将gData作为该子函数的入参。但偶尔存在入参值与实际值不一样的现象。
问题分析:这钟现象的原因可能是,在gData发生变化后,编译器没有从变量(gData)地址重新读取新数据,而是读取了寄存器中的值作为当前值,导致错误!
解决方法:
一:将gData的地址作为入参。
二:将变量定义为volatile型(没有测试,不知道行不行)问题描述:源文件定义全局变量gData(结构体变量成员),主函数中调用一个子函数function(gData),并将gData作为该子函数的入参。但偶尔存在入参值与实际值不一样的现象。
问题分析:这钟现象的原因可能是,在gData发生变化后,编译器没有从变量(gData)地址重新读取新数据,而是读取了寄存器中的值作为当前值,导致错误!
解决方法:
一:将gData的地址作为入参。
二:将变量定义为volatile型(没有测试,不知道行不行)