IAR、KEIL常见编译报错警告的解决方法(持续更新中)

2023-05-16

  1. “Warning[Pe550]: variable “变量” was set but never
    used”
    原因:变量定义赋值了但从未使用
    解决:变量定义删了就可以,编译器也不会真的给这个变量分配空间

  2. Warning[Pe223]: function “函数名” declared implicitly "
    原因:这个函数隐式声明。意思是在他调用的地方找不到函数原型。
    解决:在调用的地方增加相应函数头文件的函数原型申明。"

  3. Warning[Pe177]: function “函数名” was declared but never referenced 定义了这个函数没有用
    原因:定义了这个函数没有用

  4. Warning :546: transfer of control bypasses initialization of:
    原因:初始化被绕过
    解决:检查报错的

  5. warning: #191-D: type qualifier is meaningless on cast type
    原因:类型限定符对类型转换没有意义

  6. Warning[Pa089]: enumerated type mixed with another enumerated type
    原因:枚举类型与另一个枚举类型混合

  7. error: #if with no expression
    原因:#if 没有表达,代码举例如下:

#define TEST_A//这里只定义了这个宏,但没有具体给出值,就会报错

#if TEST_A
#define TEST_NUMBER 1
#else
#define TEST_NUMBER 2
#endif

解决:检查下代码,看到底想用的是#if还是#ifdef,#if的话宏定义需要定义个值才行


  1. “Remark[Pe193]: zero used for undefined preprocessing identifier"宏定义名”
    原因:未定义的预处理标识符。这个是最近开发遇到的一个很严重且隐蔽的问题,代码举例如下:
#include <stdio.h>

//#define TEST_A//这个宏定义没有被定义或是在其他.h中被定义但没有被这个文件引用

#if TEST_A
#define TEST_NUMBER 1
#else
#define TEST_NUMBER 2
#endif

int main()
{

	printf("test number:%d\n", TEST_NUMBER);
   
   return 0;
}
结果是编译不报错,输出 test number:2

如果代码中宏定义TEST_A是在别的.h中定义,但当前代码并未正确引用这个.h,编译器在编译这里时是认为TEST_A这个宏定义不存在的,但#if的宏不存在时并不会报错,甚至警告也没有,只是一个Remark提示。
当我们以为此处的TEST_NUMBER是受TEST_A宏控制的,其实并没有。

解决:与上一条类似,检查代码看到底想用的是#if还是#ifdef,并添加引用定义这个宏的头文件。

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

IAR、KEIL常见编译报错警告的解决方法(持续更新中) 的相关文章

  • echarts x轴一个数据;y轴左边数值,右边百分比。(柱状图)

    大概样子如下 xff1a 配置代码如下 xff1a span class token keyword export span span class token keyword const span span class token func
  • vue自定义指令clickoutside

    npm install vue click outside 方法一 xff1a span class token operator lt span span v span class token operator span clickout
  • canvas四个点画矩形,中垂线,以及顶点拖拽

    场景 xff1a 已知四个点 xff0c 画出矩形 xff0c 并且计算出每个中垂线 xff0c 并加箭头 xff0c 标识符 xff0c 点击四个顶点还能拖拽进行变动 vue span class token operator lt sp
  • promise.all([]).then(() => {}).catch(() => {})异步处理

    场景 xff1a 在同一时间 xff0c 同时调用相同的接口 xff08 唯一不同 xff1a 接口传参不一样 xff09 简单写法 xff1a Promise span class token punctuation span span
  • git 修改远程仓库地址,用户名,地址

    在git上新建项目 然后讲本地原来的git clone地址更换成新建仓库的clone 地址 方法一 xff1a 1 删除本地仓库当前关联的无效远程地址 xff0c 再为本地仓库添加新的远程仓库地址 git remote span class
  • Docker Dockerfile

    什么是Dockerfile Dockerfile 是一个用来构建镜像的文本文件 xff0c 文本内容包含了一条条构建镜像所需的指令和说明 使用Dockerfile定制镜像 仅讲解如何运行Dockerfile 文件来定制一个镜像 1 定制一个
  • websocket

    在WebSocket API中 xff0c 浏览器和服务器只需要完成一次握手 xff0c 两者之间就直接可以创建持久性的连接 xff0c 并进行双向数据传输 webSocket方法 ws send 向服务器发送数据ws close 关闭连接
  • 搭建electron-vue下

    搭建electron vue下 npm install 后续问题Version 9 of Highlight js has reached EOL npm run dev 后续ReferenceError Unknown plugin 34
  • Centos 7 安装VNC步骤

    Centos7 安装 VNC 步骤 一 安装 1 以root 用户运行以下命令来安装vncserver yum install tigervnc server 2 同样运行以下命令来安装vncviewer yum install vnc 3
  • [记录]Ubuntu18.04使用桥接模式实现上网

    前言 一般在虚拟机中采用NAT模式就可以上网 其最大优势是虚拟系统接入互联网非常简单 xff0c 你不需要进行任何其他的配置 xff0c 只需要宿主机器能访问互联网即可 但是这种方式 虚拟机可以通过主机 单向访问 网络上的其他主机 xff0
  • Linux-浅谈系统调用

    我们开始研究操作系统中一个非常重要的概念 系统调用 大多数程序员在写程序时都很难离开系统调用 xff0c 与系统调用打交道的方式是通过库函数的方式 xff0c 库函数用来把系统调用给封装起来 xff0c 要理解系统调用的概念还需要一些储备知
  • 可复用软件模块的接口设计

    在上一篇博客中模块化代码的基本写法举例 青衫客36的博客 CSDN博客 xff0c 我们给出了模块化代码的基本写法 xff0c 本文我们继续探讨对menu程序进行改造 xff0c 使之成为可复用软件模块 下面先引入可重用软件的一些相关概念
  • Makefile实验

    一 准备C程序 1 input h ifndef INPUT H define INPUT H void input int int a int b endif 2 input c include lt stdio h gt include
  • CSAPPLab2- BombLab

    写在前面 xff1a 本次实验对GDB的使用提出了较高要求 xff0c 对GDB调试不了解的读者可以先移步到笔者的这篇博客 GDB调试实验 青衫客36的博客 CSDN博客 由于老师发布的压缩包中有48个bomb代码包 xff0c 根据 学号
  • 代码优化- 前端优化

    常量折叠 基本思想 xff1a 在编译期间计算表达式的值 xff08 编译时静态计算 xff09 例如 xff1a a 61 3 43 5 61 61 gt a 61 8 xff0c if true amp amp false 61 61
  • Haffman编码(算法导论)

    上次算法导论课讲到了Haffman树 xff0c 笔者惊叹于Haffman编码的压缩效果 xff0c 故想自己亲自动手尝试写一个极简的Haffman压缩程序 首先 xff0c 我们来了解一下什么是Haffman编码 Haffman编码 赫夫
  • C++ Primer- 变量声明和定义的关系

    为了允许把程序拆分成多个逻辑部分来编写 xff0c C 43 43 语言支持分离式编译 xff08 separatecompilation xff09 机制 xff0c 该机制允许将程序分割为若干个文件 xff0c 每个文件可被独立编译 如
  • Compiler Lab2- 自制极简编译器

    笔者实现的这个超级迷你版编译器 xff08 词法分析 语法分析 生成中间代码 xff08 cpp xff09 xff09 仅支持四则运算 xff0c 功能真的是非常非常简单 xff0c 不过其中的流程 xff08 词法分析 gt 语法分析
  • 贪心算法实现最佳任务调度实验

    题目描述 一个单位时间任务是恰好需要一个单位时间完成的任务 给定一个单位时间任务的有限集S 关于S 的一个时间表用于描述S 中单位时间任务的执行次序 时间表中第1 个任务从时间0 开始执行直至时间1 结束 xff0c 第2 个任务从时间1
  • 在CentOS安装CMake

    你或许听过好几种 Make 工具 xff0c 例如 GNU Make xff0c QT 的 qmake xff0c 微软的 MS nmake xff0c BSD Make xff08 pmake xff09 xff0c Makepp xff

随机推荐

  • CSAPP Lab3- bufbomb

    实验目标 xff08 1 xff09 掌握函数调用时的栈帧结构 xff08 2 xff09 利用输入缓冲区的溢出漏洞 xff0c 将攻击代码嵌入当前程序的栈帧中 xff0c 使得程序执行我们所期望的过程 实验代码 xff08 1 xff09
  • 金蝶部署SpringBoot+vue项目总结

    金蝶部署SpringBoot 43 vue项目文章目录 文章目录 金蝶部署SpringBoot 43 vue项目文章目录前言一 金蝶部署中两个重要概念1 域2 应用基础上下文 二 部署准备1 前后台打包2 部署过程3 部署成功后的注意事项
  • Gazebo-Realsense 编译问题解决

    64 Gazebo仿真 Realsense 编译问题解决 参考 这篇文章配置 首先git clone代码到你的工作空间 git clone https github com nilseuropa realsense ros gazebo g
  • docker快捷添加用户组,远离sudo困扰

    使用docker命令时 xff0c 总是需要root权限 xff0c 同时还要验证密码 xff0c 过于麻烦便将root添加进docker分组 xff0c 远离sudo困扰 span class token comment 创建docker
  • 全注解下的SpringIoc 续4-条件装配bean

    Spring Boot默认启动时会加载bean xff0c 如果加载失败 xff0c 则应用就会启动失败 但是部分场景下 xff0c 我们希望某个bean只有满足一定的条件下 xff0c 才允许Spring Boot加载 xff0c 所以
  • 卡尔曼滤波结果和图优化的融合

    仅使用卡尔曼滤波结果作为初始值辅助NDT算法的进行 xff0c 并没有进行实际融合 论文地址 算法流程 扩展的卡尔曼滤波融合GPS 惯性测量单元IMU 编码器里程计得到融合后的定位信息 基于3D NDT配准得到激光里程计 建图优化 融合单帧
  • Kalibr工具进行相机IMU标定

    github地址 xff1a https github com ethz asl kalibrWiki文档 xff1a https github com ethz asl kalibr wiki camera imu calibration
  • 保研复试-计算机网络复习

    计算机网络是我专业课里成绩较高的课 xff0c 老师应该会问到 xff0c 面试的时候计网也是公司里爱问的科目 整理一下看到的网上的一些保研 考研复试题 xff0c 便于复习 一 计算机网络的体系结构 1 计算机网络的分类 按分布范围 xf
  • Hbase的API

    Hbase API 文章目录 Hbase API准备工作Namespace DDL1 Junit执行代码模板2 创建namespace的API3 列出所有的namespace4 列出所有namespace中的表名5 修改namespace的
  • 【Python】 matplotlib 以pdf形式保存图片

    Python matplotlib 以pdf形式保存图片 span class token keyword import span matplotlib span class token punctuation span pyplot as
  • 51单片机 | 点亮第一个LED | LED 闪烁实验 | LED流水灯实验

    文章目录 一 51单片机GPIO介绍1 GPIO概念2 GPIO 结构框图与工作原理2 1 P0端口2 2 P1端口2 3 P2端口2 4 P3端口 2 5 要点 二 LED简介三 硬件设计四 软件设计1 点亮第一个LED2 LED 闪烁实
  • matlab二维矩阵可视化几种方法

    目录 一 pcolor 二 imagesc 三 spy 四 文末彩蛋 一 pcolor 以一个100x100块对角矩阵B为例 1 xff1a 原生pcolor 可以在矩阵维度不大时进行可视化 xff0c 带小方格 矩阵比较大时画出整体为黑色
  • 【ROS入门】双系统安装和ros安装踩坑

    记录一下安装Ubuntu双系统和和ros过程中踩的坑 xff0c 防止下次再犯错 一 双系统安装与删除 双系统的安装比一开始想的说实话要简单得多 xff0c 随便用u盘制作一个系统安装盘 xff0c 或者在u盘里面放需要的Ubuntu镜像
  • 【ROS入门】TF与URDF

    一 什么是TF TF全程就是transform xff0c 就是一个坐标系的转换 在ROS中坐标的转换是一个很重要的内容 xff0c 主要还是因为机器的不灵活性 xff0c 如果是人 xff0c 完全可以灵活地控制手臂去抓取一个物体 xff
  • 树莓派3B+——系统安装及显示

    树莓派3B 43 系统安装及显示 目录 树莓派3B 43 系统安装及显示系统安装显示显示器显示3 5寸显示屏显示pc显示 树莓派3B 43 系统安装及显示 初次接触树莓派 xff0c 花了差不多一天的时间把系统的安装和显示全部搞定 xff0
  • VSLAM 相关知识点总结

    VSLAM 相关知识点 这篇文章是对VSLAM涉及的知识点进行系统性的总结和更新 xff0c 一些内容来源至VSLAM经典教材 xff0c 博客 xff0c 和开源项目 引用材料如下表 SLAM十四讲高博古月老师的技术博客崔神的github
  • Windows下CLion中文乱码最有效的解决方式

    作者开发环境 Windows 10 Clion 18 3 MinGW W64 很多人都遇到了Clion的中文乱码问题 xff0c 然后在CSDN上面寻找解决办法 比如这篇很有代表性https blog csdn net Cbk XLL ar
  • Neutron复盘及学习笔记

    前言 对于openstack neutron xff0c 曾花费很多的时间去看它的源码 xff0c 结果啥都没有看出来 openstack代码风格是 xff0c 为了实现plugin的可插拔 xff0c 运用了很多设计模式 xff0c 设计
  • 匿名飞控底层PID代码解析

    大半年就快过去了 大二上学期转瞬即逝 xff0c 离上一次博客也有一段时间了 xff0c 没错 xff0c 庆幸的是我又回来了 xff0c 其实本来第二篇博客是想着写一下两轮平衡车来着 xff0c 代码早就写好了 xff0c 但是硬件不给力
  • IAR、KEIL常见编译报错警告的解决方法(持续更新中)

    Warning Pe550 variable 变量 was set but never used 原因 xff1a 变量定义赋值了但从未使用 解决 xff1a 变量定义删了就可以 xff0c 编译器也不会真的给这个变量分配空间 Warnin