-
XC8编译器调用函数后局域变量值被改变
[color=#444444][backcolor=rgb(242, 249, 253)][font=Tahoma, "][size=16px]最近发现个问题,有个函数里边调用别的函数后老出错,查找程序没有问题,经过仿真后发现在调用一个子函数后有几个局部变量值会发生改变,再分析原因,发现本函数的局部变量和子函数的局部变量有地址重合的,子函数中对局部变量进行了操作,返回后相应的局部变量值发生了改变,所以出错,我现在把函数的所有局部变量全部设置为了静态变量,但是这只能是个权益之计,而且这样解决不知道会不会造成别的问题,正常来说C编译器应该能够避免这种现象的发生,我怀疑是编译器设置有问题了,但是找不到地方,有哪位大神能给帮帮忙呗。[/size][/font][/backcolor][/color]
13700浏览量 33回复量 关注量 -
【求助贴】keilc51开发CH559单片机的奇怪BUG,求大佬帮看一眼
测试程序: UINT8 test0=0X5F; UINT16 test1=0X5F; printf("DEBUG:%02X %02X %02X %02X %02X", test0, test1, 0X5F&0X07, test0&0x07, test1&0x07); 串口打印结果: [22:36:39.658]收←◆DEBUG:5F00 5F07 700 7C9 2048 两个变量都改成UINT8的结果: [22:41:16.502]收←◆DEBUG:5F5F 707 708 9A51 C920 两个变量都改成UINT16的结果: [22:40:20.898]收←◆DEBUG:5F 5F 700 700 783 单片机是51内核的,其它地方也经常遇到赋值错误的奇怪BUG,不知道是不是开发平台有问题,有一些设置为UINT16就没BUG,改成UINT8就有
3040浏览量 4回复量 关注量 -
GD32调试在线运行 程序可以执行,断电重启 程序消失?
编程工具使用MDK5.24A 和5.34 两种版本都存在这种问题,简直活久见,5版本编译器和6版本编译器都尝试过,没有解决。BOOT已通过电阻下拉。请问各位有遇到过相同情况的吗?怎么解决呢?
4188浏览量 3回复量 关注量 -
ARM C++编译器不能使用 volatile const 编译结构?
keil5用C++编译,出现错误: D:\Keil_v5\Arm\Packs\AutoChips\AC781x_DFP\1.1.0\ATC_Driver\Drivers\GPIO\ac78xx_gpio_reg.h(131): error: #294: invalid union member -- class "struct
:: :: " has a disallowed member function 原因找到:[font=宋体][size=3]CMSIS: Why is __I different in C and C++[/size][/font] 但是,ac78xx_gpio_reg.h 是只读文件(官方文件),不想改。 还有其它方法吗? 1907浏览量 10回复量 关注量 -
51单片机要是有64位双精度浮点库就好了
KEIL编译器的float和double都是单精度32位的,如果做科学计算这个精度太差了,双精度找遍全网都找不到,找到德国有一家做这个库的叫做GOFAST,但是要钱很贵,要是有免费的就好了
2540浏览量 17回复量 关注量