STVD ERROR:misplaced local declaration
STVD ERROR:misplaced local declaration
问题解决: 在使用STVD的时候报如上错误,发现是STVD的编译器COSMIC的编译语法标准和C99的不一样,C99中,函数内的局部变量可以即用即声明,而COSMIC编译器支持的模式是在函数一开始,就将所有的局部变量全部声明完成。
我在开发中使用的是STM8系列MCU,个人觉得编译器这么设计的原因是:
STM8采用变长指令集:区别于定长指令集,变长指令集的数据寻址范围趋向于越紧凑越好,这样可以实现用最短的指令存取数据,达到压缩代码量的目的,实现编译器的编译优化。而定长指令集的数据寻址范围固定,函数中的局部变量即用即声明,其指令代码长度都是固定的,所以没有代码量的区别。
例如:
STM8的903k,stack的大小为512B,如果把所有的局部变量全都在一开始时分配到一块连续的区域,使用偏移量寻址时,一般一个字节就可以全部搞定,如果将局部变量分散开声明,很可能取数据时需要两个字节,增加了代码量。
而像arm使用thumb指令集的MCU中,由于采用定长指令集,其存储器的地址范围固定为16bit,不管将局部变量放在调用栈中的哪里,指令代码长度都一样。
STVD ERROR:misplaced local declaration相关推荐
- git pull 问题“error: Your local changes to the following files would be overwritten by merge”
问题描述: error: Your local changes to the following files would be overwritten by merge 解决办法: 方法1: 如果你想 ...
- error: Your local changes to the following files would be overwritten by merge
用git pull来更新代码的时候,遇到了下面的问题: error: Your local changes to the following files would be overwritten by ...
- 解决 error: Your local changes to the following files would be overwritten by merge:XXXX
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. idea 上将本地代码推送到 git后 , 报错如下图 error: Your local chan ...
- Local declaration of 'XXX' hides instance variable
Local declaration of 'XXX' hides instance variable 遇到这种原因,是因为本地变量跟函数参数变量同名.
- IOS错误之----警告 Local declaration of 'XXX' hides insta
今天调试程序遇到这么一个警告! Local declaration of 'XXX' hides instance variable 遇到这种原因,是因为本地变量或函数参数变量同名.看来,还是要注意变 ...
- Local declaration of '' hides instance variable
1.Local declaration of ''a " hides instance variable 翻译为:a的局部声明隐藏了实例变量 解决方式: 变量在之前定义过,建议给变量换个名 ...
- iOS 警告 Local declaration of 'XXX' hides instance
Local declaration of 'XXX' hides instance variable 出了一个警告,吓一跳 遇到这种原因,是因为本地变量或函数参数变量同名,原来是定义一个数组的时候 ...
- 安装keepalive错误:configure: error: No SO_MARK declaration in headers
安装keepalive的时候,在configure的时候遇到的错误: [root@gw keepalived-1.2.16]# ./configure checking for gcc... gcc ...
- git代码库pull报错:error: Your local changes to the following files would be overwritten by merge
前言 编辑器会把没有添加到忽略名单的文件自动add到git的暂存区. 起因 某次build后打了个zip压缩包放在根目录下,被自动add了,但commit时把勾打掉没有提交.第二天来把这个zip包手动 ...
最新文章
- 在这个时代,如何管理好95后员工?
- android systemtrace 报错
- CodeForces Round #291 Div.2
- 什么是VGA光纤收发器?
- Html5 学习笔记 --》html基础 css 基础
- asp.net mvc 注册中的邮箱激活功能实现(二)
- 这届互联网公司月饼:阿里卡哇伊,百度酷炫风,京东乾隆审美……
- 下面介绍几种查看linux版本信息的方法和GCC版本
- Android:手把手教你打造可缩放移动的ImageView(下)
- SQL Server-【知识与实战VII】存储过程(下)
- 2022年低压电工考试题及在线模拟考试
- 把B站表情包植入MATLAB
- 修改计算机名无法共享打印机,打印机设置共享以及共享时无法连接,报错0X00000006解决方法...
- 资管过程日报指标异常分析
- python header函数_Header函数
- 没有安装sql数据库如何用vs打开mdf数据库文件
- 长颈鹿的脖子变长其实不是因为吃高处的树叶?科学家在1700万年前的化石中找到答案...
- 红光光浴到底有没有用#大健康#红光光浴#红光#种光光学
- 腾讯企业邮箱单点登录 php,腾讯企业邮箱集成的坑
- Altium designer实践总结
热门文章
- Android input keyevent命令
- tensorflow之add_to_collection
- tensorflow之softmax
- tensorflow之第一个项目MNIST数据集
- 深度学习自学(三十):基于深度学习误排序学习的行人重识别对抗攻击
- 深度学习自学(八):人脸识别主要场景与算法实现
- python语音开发库-各种 Python 库/模块/工具
- sdhc 读写 扇区 linux,SD卡读写扇区注意事项(转)
- 服务器搭建网站完整教程(宝塔面板+wordpress) 快速搭建网站 一键部署
- java 弹出另存为_java如何实现 io流传输过来的文件,提示另存为弹出窗口?