STM32问题_01:declaration may not appear after executable statement in block

这篇具有很好参考价值的文章主要介绍了STM32问题_01:declaration may not appear after executable statement in block。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、问题描述

如图:在点灯的过程中想写一个for循环来实现随机数点灯功能,但是如下图第26行的代码出现了问题“declaration may not appear after executable statement in block”,翻译过来就是声明不能出现在块中的可执行语句之后。其实int i是声明语句,值得注意的是“GPIO_InitTypeDef GIIOPP”(此句的作用是定义了一个GPIO_InitTypeDef类型的结构体变量GIIOPP)也是声明语句。

declaration may not appear after,stm32,嵌入式硬件,单片机,mcu

二、解决方案一

将声明语句放在int main()语句下方,对于上图而言,可以把int i放在int main()的上方;或者将其放在GPIO_InitTypeDef GIIOPP的上方/下方。只需要将声明语句放在可执行语句之前。GPT的回答如下。

declaration may not appear after,stm32,嵌入式硬件,单片机,mcu

三、解决方案二

1、因为keil 默认编译标准是C89,将C89换成C99就行。此时声明语句的位置不影响代码执行

2、如下图:

declaration may not appear after,stm32,嵌入式硬件,单片机,mcu

3、C89和C99的区别


Keil是一款广泛使用的嵌入式开发工具,它提供了多种编译标准选项,包括C89和C99。

C89是指ANSI C(或称为C90)标准,在1989年发布。它是最早的C语言标准之一,定义了C语言的基本语法和特性。

C99是指C语言的第二个标准,于1999年发布。相比于C89,C99引入了一些新特性和改进,以增强C语言的表达能力和功能,提供更方便的编程方式。

C89与C99的区别主要体现在以下几个方面:

  1. 数据类型:C99引入了新的数据类型,例如long long intbool等。而C89只支持基本的数据类型。

  2. 预处理指令:C99增加了一些新的预处理指令,例如_Pragma__func__等,提供更灵活和强大的预处理功能。

  3. 变长数组:C99支持变长数组,可以动态指定数组的长度。而C89中数组的长度必须是常量。

  4. 注释:C99支持在代码中使用//进行单行注释,而C89中只支持/* */多行注释。

  5. 布尔类型:C99引入了_Bool类型,用于表示布尔值(true或false)。而C89中使用整型来表示布尔值。

需要注意的是,不同版本的编译器可能对C89和C99的支持程度有所差异。因此,在选择编译标准时,需要根据实际情况和编译器的支持情况来确定。文章来源地址https://www.toymoban.com/news/detail-763920.html


到了这里,关于STM32问题_01:declaration may not appear after executable statement in block的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Arm电脑出现【GLFWError】WGL: The driver does not appear to support OpenGL问题解决

    本人Arm64笔记本,安装Windows 11操作系统。准备运行OpenGL游戏时,出现弹窗报错: 看官方帮助,说是可能驱动不匹配,要去官网下载驱动,可是现在Arm64自己的驱动都参差不齐,所以需要别的办法。 直接给出解决方案: 去微软商店Microsoft Store搜索安装OpenCL和OpenGL兼容包 ,安装

    2024年02月11日
    浏览(38)
  • c++出现 [Error] ** was not declared in this scope类似的问题怎么办?

    如果出现这个错误,有2种可能。 1.定义**数据类型语句的前一行没有写分号,而且你在程序中调用了他。 例如以下这个语句就会报错: 因为第4行后面没有写分号,而且后面用了d++。所以会报错。 2.在程序里调用的c++函数没有引进数据流。 就拿memset函数举例吧:memset需导入

    2024年02月07日
    浏览(32)
  • Message: ‘chromedriver‘ executable may have wrong permissions.

    今天运行项目遇到如下代码 上述代码运行报错如下: 出错的原因大概率出在chromedriver上。 首先根据代码中的chrome_driver检查是否有chromedriver,如果有的话那应该是版本问题。如果没有,以及版本问题都要根据google-chrome的版本下载对应的chromedriver。 使用如下命令检查google-ch

    2024年02月10日
    浏览(27)
  • Kafka【问题 03】Connection to node -1 (/IP:9092) could not be established. Broker may not be available.

    此问题仅出现在云服务器上,非云服务器未出现过一下报错: 非云服务器: 云服务器: 云服务器有两个IP,监听IP为云服务器IP,而advertised监听IP为云服务器的外网IP。

    2024年02月05日
    浏览(32)
  • 关于STM32生成Bin文件,出现Error: Q0122E: Could not open file问题小结

    目录 1.出现这一个问题的主要表现为,编译器找不到该文件的路径。 2.注意         解决方法1:添加绝对路径:          2.解决方法2:直接添加                          C:Keil_v5ARMARMCCbinfromelf.exe这个文件路径要修改成自己Keil文件夹的路径位置。 在绝对路径

    2024年01月25日
    浏览(43)
  • 记录STM32 ST-LINK Utility出现“Can not connect to target“的问题,已解决

    在调试电路板下载程序的过程中,突然出现ST-Link连接不成功,因为以前是直接connect就可以识别成功的,最近一直连不上,以为是硬件出了问题,后来在网上查阅后,发现在connect前按下复位键就可以了,尝试之后果然connect成功!     具体操作为:按下复位按键,别撒手,点击

    2024年02月11日
    浏览(78)
  • 已解决:sqlalchemy.exc.ObjectNotExecutableError: Not an executable object‘......’的报错问题

    在flask框架中连接数据库,并测试数据库是否连接成功 使用了mysql数据库和pymysql驱动 这是错误的相关代码,在conn.execute()方法处抛出了错误 \\\'select 1\\\'不是一个可执行的对象 文本sql的执行,需要使用sqlalchemy中的text()方法处理字符串,再执行语句 1、导入 from sqlalchemy import text

    2024年02月13日
    浏览(47)
  • 【STM32】STM32学习笔记-课程简介(01)

    程序纯手打,手把手教学 STM32最小系统板+面包板硬件平台 该平台比较适合高校在校大学生学习STM32。 STM32最小系统+面包板 Windows10操作系统 万用表、示波器、镊子、剪刀等 Keil5 MDK 4.1 面包板和跳线/飞线 4.2 杜邦线和STM32最小系统板 4.3 STLINK和OLED显示屏 4.4 LED和按键 4.5 电位器和

    2024年03月18日
    浏览(37)
  • STM32单片机开发-01 STM32介绍

    通过野火开发板学习单片机 从内核上分有Cortex-M0、M3、M4 和M7 F1 代表了基础型,基于Cortex-M3 内核,主频为72MHZ F4 代表了高性能,基于Cortex-M4 内核,主频180M。 数据手册:用于芯片选型和设计原理图 参考手册:用于编程时查阅 Icode总线 – 该总线讲M3内核的指令总线与闪存指令

    2024年01月21日
    浏览(44)
  • 解决conda激活环境 IMPORTANT: You may need to close and restart your shell after running ‘conda init‘.

    解决IMPORTANT: You may need to close and restart your shell after running ‘conda init’. 激活conda环境 报错信息 在命令行运行 运行完成后,重启CMD命令行,激活Python环境即可解决。

    2024年02月12日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包