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相关推荐

  1. 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: 如果你想 ...

  2. 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 ...

  3. 解决 error: Your local changes to the following files would be overwritten by merge:XXXX

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. idea 上将本地代码推送到 git后 , 报错如下图 error: Your local chan ...

  4. Local declaration of 'XXX' hides instance variable

    Local declaration of 'XXX' hides instance variable 遇到这种原因,是因为本地变量跟函数参数变量同名.

  5. IOS错误之----警告 Local declaration of 'XXX' hides insta

    今天调试程序遇到这么一个警告! Local declaration of 'XXX' hides instance variable 遇到这种原因,是因为本地变量或函数参数变量同名.看来,还是要注意变 ...

  6. Local declaration of '' hides instance variable

    1.Local declaration of  ''a " hides instance variable 翻译为:a的局部声明隐藏了实例变量 解决方式: 变量在之前定义过,建议给变量换个名 ...

  7. iOS 警告 Local declaration of 'XXX' hides instance

    Local declaration of 'XXX' hides instance variable   出了一个警告,吓一跳 遇到这种原因,是因为本地变量或函数参数变量同名,原来是定义一个数组的时候 ...

  8. 安装keepalive错误:configure: error: No SO_MARK declaration in headers

    安装keepalive的时候,在configure的时候遇到的错误: [root@gw keepalived-1.2.16]# ./configure checking for gcc... gcc ...

  9. git代码库pull报错:error: Your local changes to the following files would be overwritten by merge

    前言 编辑器会把没有添加到忽略名单的文件自动add到git的暂存区. 起因 某次build后打了个zip压缩包放在根目录下,被自动add了,但commit时把勾打掉没有提交.第二天来把这个zip包手动 ...

最新文章

  1. 在这个时代,如何管理好95后员工?
  2. android systemtrace 报错
  3. CodeForces Round #291 Div.2
  4. 什么是VGA光纤收发器?
  5. Html5 学习笔记 --》html基础 css 基础
  6. asp.net mvc 注册中的邮箱激活功能实现(二)
  7. 这届互联网公司月饼:阿里卡哇伊,百度酷炫风,京东乾隆审美……
  8. 下面介绍几种查看linux版本信息的方法和GCC版本
  9. Android:手把手教你打造可缩放移动的ImageView(下)
  10. SQL Server-【知识与实战VII】存储过程(下)
  11. 2022年低压电工考试题及在线模拟考试
  12. 把B站表情包植入MATLAB
  13. 修改计算机名无法共享打印机,打印机设置共享以及共享时无法连接,报错0X00000006解决方法...
  14. 资管过程日报指标异常分析
  15. python header函数_Header函数
  16. 没有安装sql数据库如何用vs打开mdf数据库文件
  17. 长颈鹿的脖子变长其实不是因为吃高处的树叶?科学家在1700万年前的化石中找到答案...
  18. 红光光浴到底有没有用#大健康#红光光浴#红光#种光光学
  19. 腾讯企业邮箱单点登录 php,腾讯企业邮箱集成的坑
  20. Altium designer实践总结

热门文章

  1. Android input keyevent命令
  2. tensorflow之add_to_collection
  3. tensorflow之softmax
  4. tensorflow之第一个项目MNIST数据集
  5. 深度学习自学(三十):基于深度学习误排序学习的行人重识别对抗攻击
  6. 深度学习自学(八):人脸识别主要场景与算法实现
  7. python语音开发库-各种 Python 库/模块/工具
  8. sdhc 读写 扇区 linux,SD卡读写扇区注意事项(转)
  9. 服务器搭建网站完整教程(宝塔面板+wordpress) 快速搭建网站 一键部署
  10. java 弹出另存为_java如何实现 io流传输过来的文件,提示另存为弹出窗口?