keil5warning: function “xxxx” declared implicitly的bug分析

这篇具有很好参考价值的文章主要介绍了keil5warning: function “xxxx” declared implicitly的bug分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

keil5warning: function “xxxx” declared implicitly的bug分析

一、问题分析:

可能是头文件出错,自己不小心将两个文件的预编译指令(防止头文件被重复包含)名称写成相同的了,

导致想要使用的函数原型声明的那个头文件由于另外一个头文件的预编译指令相同,而没有包含进来。

举个例子就明白了:

错误原因:

(1)我在移植语音模块的串口配置文件的时候忽略了去修改 #ifndef __USART_H,由于厂家命名为__USART_H,也就是说如果定义了 __USART_H就不会再次重新定义该头文件

declared implicitly,无人机,bug,stm32

(2)而之前,我移植指纹模块串口配置头文件的时候,厂家命名也为__USART_H ,与语音模块冲突,

导致我main.c都包含这两个文件的时候,有一个文件由于重复包含而不会被定义,导致使用该文件里面的函数时候,找不到函数原型而报错

declared implicitly,无人机,bug,stm32

(3)导致我main.c都包含这两个文件的时候,有一个文件由于重复包含而不会被定义,导致使用该文件里面的函数时候,找不到函数原型而报错

declared implicitly,无人机,bug,stm32

分析:

(1)由于先包含usart3.h,usart3.h中的内容在编译阶段拷贝过来,即编译器执行了 #define__USART_H的语句,

(2)但是后面的预编译指令 #include "usart5.h" 执行的时候,由于与usart3.h中的命名相同(移植的时候忽略的一个小细节),导致编译器认为 __USART_H已经定义好了(因为usart3.h中有#define__USART_H 语句),

(3)所以usart5.h文件中的#ifndef __USART_H #define__USART_H 的语句,会使得由于usart3.h中已经定义了__USART_H而导致该文件不会被定义,也就是该文件里面的所有内容包括函数声明不会拷贝过来

(4)所以导致使用该文件声明的函数的时候会出现declared implicitly这种错误

二、总结:

1.这里给大家提供的是一种解决该问题的思路,并不一定就是这个原因。其他方法可以参考以下其他博主的总结的方法

https://blog.csdn.net/weixin_45714385/article/details/114965914

2.这种问题在移植程序的时候很容易出现,比如说我移植语音模块和指纹模块的串口配置部分的代码,厂家就会将头文件的预编译指令设置成一样的 #ifndef __USART_H 导致一种难以发现的错误文章来源地址https://www.toymoban.com/news/detail-760313.html

到了这里,关于keil5warning: function “xxxx” declared implicitly的bug分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • keil5出现‘Target not created‘ keil5出现‘Target not created‘

    新建工程中写了main函数进行编译时出现错误的问题: 查找报错的关键提示: cannot open source input file \\\"core_cm3.h\\\": No such file or directory   #include \\\"core_cm3.h\\\" 这是因为你装的MDK版本太新了,比如MDK5.12/5.13,它们不会从MDK安装目录去查找头文件。 所以导致这个错误。 解决方法如下:

    2024年02月11日
    浏览(48)
  • 【Keil5】Keil查看程序占用flash大小

    我们在挑选一款单片机的时候,会查询单片机的主频、内部flash和RAM、封装、各种外设接口资源。其中flash和RAM大小尤为重要。 以STM32H750VBT6为例,其内部flash只有128KB,RAM却有1056KB。 该选型手册可在该链接中免积分下载:STM32系列产品选型手册 该型号的flash容量比F103ZET6的512

    2024年02月12日
    浏览(47)
  • keil5 --工程创建

    一,文件夹介绍 首先去官网过去其他地方获取到官方提供的标准库文件  下面这个我是在官网进行下载的 我们在打开keil的时候会弹出一个在线下载的框(这个框这里先不做说明,后面在继续讲解),我们不使用这个在线下载功能,直接用官方提供的外设库进行开发。 在这个

    2024年02月07日
    浏览(51)
  • keil5烧录系统

    目录 1. 设备 2. 接线  3.烧录 4.连接问题 我现在有这样一个stm32的板子 还有一个这样的ST-LINK V2 将ST-LINK V2与板子的这里连接,+接3.3V,D接SWDIO,C接SWCLK,G接GND 之后把ST-LINK V2插到电脑上 找到项目文件夹中的.uvprojx文件 打开keli5  在左侧就会看到项目的全貌  不需要点开任何文件

    2024年02月06日
    浏览(55)
  • KEIL5的工程建立

    目录 一,工程的建立 二,添加工程文件(记得找到固件库) 三,总结 四,小微操   前言:基于上一篇文章的分析,要明白底层逻辑,但是又不想去学习得太麻烦,于是笔者学习基于库函数的开发方式学习STM32F10C8T6,但是哈,B站的Up(叫:江协科技)讲的太好了,我推荐你

    2024年02月12日
    浏览(40)
  • keil5的界面认识

    KEIL5界面介绍 KEIL5界面介绍 ` Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。 提示:以下是本篇文章正文内容,下面案例可供参考 1、首先我们先打开keil5 2、打开

    2024年02月06日
    浏览(40)
  • keil5下载安装教程(附带兼容keil4方法)

          为了方便stm32和C51学习,我收集资料整理了keil5的安装教程,同时附带兼容keil4程序的方法,避免大家在使用C51的时候再去安装keil4这个麻烦的过程。 目录 一、可兼容keil4的keil5版本查询 二、keil5安装包官网下载 三、keil5安装过程。 四、破解keil5。 五、下载所用单片机支

    2024年01月23日
    浏览(53)
  • Keil5安装和使用小记

    随着keil版本的更新,一些使用问题一随之产生。本文针对安装目前最新版本keil软件和使用问题做一些总结。 官网下载链接 下载指引-----以下载C51为例 -1- 选择 Download -2- 选择 Product Download -3- 选择需要下载的产品 -4- 下方填写自己的个人信息,可以随便填,不需要什么验证码。

    2023年04月09日
    浏览(53)
  • keil5安装及注册许可

            最近换了一份嵌入式软件的工作,因为之前没有这方面的了解(虽然大学学的模数电单片机,但是当时只顾玩啥也没学到。。。)所以很多东西都需要自己看资料自学。         在这里我想跟大家分享自己学习的过程,也希望不足的地方大佬们能指正!         因

    2024年02月11日
    浏览(40)
  • Keil5的安装与注册

    目录 一、Keil5 的下载安装 二、Keil5 的注册 备注:本文是对   MDK   版本的Keil5的下载和安装介绍 官方下载链接: Keil Product Downloads https://www.keil.com/download/product/  1. 选择第一个MDK-Arm,下载最新版本 2. 填写一些个人信息,可以随便填写,把空的 全部 都填上就可以,然后点击

    2024年02月09日
    浏览(62)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包