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

2023-11-10

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

一、问题分析:

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

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

举个例子就明白了:

错误原因:

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

在这里插入图片描述

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

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

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fVMx6TcV-1680422924733)(image-20230402154550694.png)]

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

分析:

(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 导致一种难以发现的错误

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

keil5warning: function “xxxx” declared implicitly的bug分析 的相关文章

  • Apache Shiro 简介

    本文转载自 点击打开链接 1 1 简介 Apache Shiro是Java的一个安全框架 目前 使用Apache Shiro的人越来越多 因为它相当简单 对比Spring Security 可能没有Spring Security做的功能强大

随机推荐

  • ztree 修改样式_zTree样式修改

    ztree挺好用的 不过公司美工设计的行政树图稿一般都比ztree原生的样式要好看的多 所以只能自己单独对样式进行修改 目前样式倒是修改好了 只能不能根据层级动态匹配样式 每个层级的被选中样式需要对两个属性单独设置 具体修改地方下面代码中有
  • java里%是什么_java里"."是什么意思?

    展开全部 lt 数学意义 在数字没有溢出的前提下 对于正数和负数 左移一位都相当于乘以2的1次方 左移n位就相当于乘以2的n次方 计算 3 lt lt 2 3 lt lt 2 则是将数字3左移2位 1 首先把3转换为二进制数字0000 00
  • python机器学习手写算法系列——逻辑回归

    从机器学习到逻辑回归 今天 我们只关注机器学习到线性回归这条线上的概念 别的以后再说 为了让大家听懂 我这次也不查维基百科了 直接按照自己的理解用大白话说 可能不是很严谨 机器学习就是机器可以自己学习 而机器学习的方法就是利用现有的数据和算
  • SQL11 高级操作符练习(1)

    描述 题目 现在运营想要找到男性且GPA在3 5以上 不包括3 5 的用户进行调研 请你取出相关数据 示例 user profile id device id gender age university gpa 1 2138 male 21
  • 牛客SQL练习一

    1 题目描述 查找最晚入职员工的所有信息 CREATE TABLE employees emp no int 11 NOT NULL birth date date NOT NULL first name varchar 14 NOT NU
  • springboot自定义favicon.ico

    先上效果图 1 在application yml文件中必须修改配置 spring mvc favicon enabled false spring mvc favicon enabled false 2 在static文件下 ico转化地址
  • LeetCode-Python-1248. 统计「优美子数组」(数组 + 数学)

    给你一个整数数组 nums 和一个整数 k 如果某个子数组中恰好有 k 个奇数数字 我们就认为这个子数组是 优美子数组 请返回这个数组中 优美子数组 的数目 示例 1 输入 nums 1 1 2 1 1 k 3 输出 2 解释 包含 3 个
  • base64格式图片展示

    后端发图片 为base64格式的 前端接收后页面展示图片 处理方法 let imageData data image png base64 res data image 后端传来数据 如果base64位图片没有带前面得头 data imag
  • clickhouse索引原理介绍

    clickhouse本身支持很多表引擎 这里只介绍其中最常用的MergeTree引擎 建表语句 name1 type1 DEFAULT MATERIALIZED ALIAS expr1 TTL expr1 name2 type2 DEFAU
  • cannot import name ‘Merge‘ from ‘keras.layers‘解决方法

    首先根据报错提示 找到对应的文件 看看Merge是否在keras layers里 发现现在已经改成下图的了 直接复制粘贴到代码里即可 报错提示为王 别再扎错方向
  • 数据清洗的基本流程_数据分析几步走?告诉你全面系统的流程

    通过对 谁说菜鸟不会数据分析 的阅读 我们知道数据分析的一般流程为 明确分析目标 一切以目标为导向 确定分析思路 数据获取 数据处理 清洗 转化 提取 计算等 数据分析及可视化 报表撰写 这就是数据分析的一般流程 本章我们就讲一下各个流程中
  • MySQl数据库必会sql语句(提升版)

    原文链接 http blog csdn net qq 32059827 article details 51778816 这一篇属于加强版 问题和sql语句如下 创建users表 设置id name gender sal字段 其中id为主键
  • 5V转1.8V稳压芯片,3.7V转1.8V稳压芯片

    5V转1 8V稳压芯片 3 7V转1 8V稳压芯片 5V转1 8V芯片 3 7V转1 8V芯片 5V转1 8V降压芯片 3 7V转1 8V降压芯片 5V转1 8V电路图 3 7V转1 8V电路图 锂电池3 7V输入和供电5V输入 降压转换成
  • 没有调试适配器,无法发送“variables”

    vs code调试报 没有调试适配器 无法发送 variables 今天在vs code调试node区块链应用时 点开打印内容 提示如上 并看不到打印内容 原因及解决方法 出现在这种情况是因为node调试比较特殊 执行调试完成之后进程退出
  • node接收文件

    目录 html nodejs详细实现 nodejs简单实现 html
  • 原生js + canvas 实现刻度尺效果

    欢迎访问我的 个人博客 手势事件 touchstart 手指按下 touchmove 手指移动 touchend 手指抬起 效果图 完整代码 ruler js var ruler 初始化刻度尺插件 el 容器 String height 刻
  • 【ELK】Elasticsearch入门04 -- 基础语法 查询语法(全文检索、多字段匹配、词条匹配、模糊检索、结果过滤)

    ELK Elasticsearch入门04 基础语法 查询语法 全文检索 多字段匹配 词条匹配 模糊检索 结果过滤 查询所有数据 GET 索引名 search query match all GET test search query ma
  • GitHub 上排名前 100 的 Objective-C 项目简介

    主要对当前 GitHub 排名前 100 的项目做一个简单的简介 方便初学者快速了解到当前 Objective C 在 GitHub 的情况 GitHub 地址 https github com Aufree trip to iOS blo
  • C#实现向已存在的Excel文件中写入数据实例(两种方法)

    添加引用 using Excel Microsoft Office Interop Excel using System Reflection 方法一 将识别结果写入到Excel表格中 根据指定模版写入 并将其以当前保存时间命名另存 Wri
  • keil5warning: function “xxxx” declared implicitly的bug分析

    keil5warning function xxxx declared implicitly的bug分析 一 问题分析 可能是头文件出错 自己不小心将两个文件的预编译指令 防止头文件被重复包含 名称写成相同的了 导致想要使用的函数原型声明的