C251编译器用的是C99语法吗?与C51不一样啊
一文件原来是STC8A工程,用C51编译无错误。改到STC32上来同样语句报错。原来定义的缓冲区直接赋值0,可以正常编译。用C251编译器时要赋值数组。
STC32G12K128 是32位的8051与STC8A8K64D4不是完全兼容的
又看到声明时赋值的了
重要的事情说三遍
全局变量禁止在声明时赋值
全局变量禁止在声明时赋值
全局变量禁止在声明时赋值
赶紧去看新手必读
https://www.stcaimcu.com/thread-16535-1-1.html
包含startup.a51时,默认会初始化data(也是idata的低128字节)为0,xdata不操作为上电随机数;不包含startup.a51时,data和xdata为上电随机数
程序只能在函数内执行,全局变量禁止在声明时赋值,赋值的语句必须在函数内,函数外的非声明语句无效
数组可以在初始化时用memset函数全部清零(或其他初始化值)
养成好习惯,函数内的局部变量也不要声明时赋值,而且必须在函数开头声明
xxx=0;
这样是不规范的,等号前后数据类型和长度不匹配,不能前面是N个字节,后面是1个字节 stc32没有pdata区了啊 DebugLab 发表于 2025-5-13 17:46
又看到声明时赋值的了
重要的事情说三遍
全局变量禁止在声明时赋值
谢谢版主提示 DebugLab 发表于 2025-5-13 17:46
又看到声明时赋值的了
重要的事情说三遍
全局变量禁止在声明时赋值
话说这个全局变量赋值这个,有什么依据么?C251 和 C51编译器的区别么?{:fadai:}我翻了翻你的关于这个问题的论述,,只找到了一个模糊的可能会失效的描述,剩下的描述就都是禁止并没有提及原因。。 DebugLab 发表于 2025-5-13 17:46
又看到声明时赋值的了
重要的事情说三遍
全局变量禁止在声明时赋值
,,大概就是找到了一个这个描述,,,几乎没有解释出现这个问题的原因,,,所以可以继续补充一下么
看看stc32的ram区
_奶咖君_ 发表于 2025-5-14 09:14
,,大概就是找到了一个这个描述,,,几乎没有解释出现这个问题的原因,,,所以可以继续补充一下么
...
编译器的原因,这样操作值就不对,不要这样操作就可以了
页:
[1]
2