keil报错:Symbol set_value multiply define和 incomplete type is not allowed和error:  #65: expected a “;“

2023-10-31

一个是重复定义,一个是不完整类型,一个是缺一个;

第一个:重复定义,一般最多的就是两个文件中的变量定义重复而报错,一般这种改一下名就差不多了,而另一种就比较难看出来了。比如:定义一个结构体在sys.h的文件中,并在文件中进行了定义和初始化,然后在sys.c文件中调用了定义的结构体,同时因为在.h的文件中,所以在main.c中也可以调用定义的结构体,最后编译报错。因为在.h文件中进行了定义,当被两个.c文件调用后就被重复定义了。

例:
sys.h:
struct xxx
{
 int data;
};

struct xxx xx;

#include"sys.h"
sys.c:

void max(void)
{
    xx.data = 100;
}

#include"sys.h"
main.c:
void min(void)
{
    xx.data = 100;
}
编译会报错,正确的应该把struct xxx xx拿到sys.c的文件中,要在其他位置用的时候extern一下。

第二个问题不完整类型

还是上面的例子:

例:
sys.h:


#include"sys.h"
sys.c:

struct xxx
{
 int data;
};

struct xxx xx;

void max(void)
{
    xx.data = 100;
}

#include"sys.h"
main.c:
void min(void)
{
    xx.data = 100;
}
编译会报错,正确的应该把
struct xxx
{
 int data;
};
拿到sys.h的文件中,要在其他位置用的时候extern一下。

还有一个:error:  #65: expected a ";"

一般就是缺了个;,一般加一个就可以了。

还有一种,在某个.h文件中的最后一句缺了一个分号;。结果这个.h文件被几十个文件调用,就会突然出现几十条问题出来。

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

keil报错:Symbol set_value multiply define和 incomplete type is not allowed和error:  #65: expected a “;“ 的相关文章

  • c项目makefile多重定义错误

    这个问题是一个对应于创建的repexthis问题 在我的嵌入式 C 项目中 我有两个独立的板 我想为每个板创建两个 c 文件 master c 和 Slave c 其中包含自己的特定main 功能 我使用 stm32cumbemx 生成带有
  • 如何让printf在STM32F103上工作?

    我是 STM32F103 世界的新手 我有一个STM32F103的演示代码 我正在使用arm none eabi来编译它 我尝试了在谷歌上可以找到的内容 但到目前为止没有任何效果 我已经花了三天时间来解决这个问题 任何人都可以给我一个运行良
  • 135-基于stm32单片机超声波非接触式感应水龙头控制系统Proteus仿真+源程序

    资料编号 135 一 功能介绍 1 采用stm32单片机 LCD1602显示屏 独立按键 DHT11传感器 电机 超声波传感器 制作一个基于stm32单片机超声波非接触式感应水龙头控制系统Proteus仿真 2 通过DHT11传感器检测当前
  • rt-thread studio中新建5.0不能用

    文章目录 一 版本对比 二 文件和文件夹打斜杠 在使用RT Thread studio创建新工程5 0版本的时候 结果发现新建完成之后程序不能正常运行 但是创建4 10版本的时候却能运行 那肯定是新版本出现了BUG 一 版本对比 首先对比了
  • STM32F103

    提示 来源正点原子 参考STM32F103 战舰开发指南V1 3PDF资料 文章目录 前言 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 前言 提示 这里可以添加本文要记录的大概内容 开发环境硬件普中科技 接线图在g
  • 物联网网关

    物联网网关是 连接物联网设备和互联网的重要桥梁 它负责将物联网设备采集到的数据进行处理 存储和转发 使其能够与云端或其它设备进行通信 物联网网关的作用是实现物联网设备与云端的无缝连接和数据交互 物联网网关功能 数据采集 物联网网关可以从物联
  • [屏驱相关]【SWM166-SPI-Y1.28C1测评】+ 有点惊艳的开箱

    耳闻华芯微特许久了 看到论坛得评测活动赶紧上了末班车 毕竟对有屏幕得板子也是很喜欢得 京东快递小哥客客气气 微笑着把快递给了我 好评 直接拆了包 在此之前没看过视频号 所以这个圆盘盘得模具还是有点惊喜的 正面照如下 开机有灯光秀 还有动画
  • 串口通讯第一次发送数据多了一字节

    先初始化IO再初始化串口 导致第一次发送时 多出一个字节数据 优化方案 先初始化串口再初始化IO 即可正常通讯
  • 1.69寸SPI接口240*280TFT液晶显示模块使用中碰到的问题

    1 69寸SPI接口240 280TFT液晶显示模块使用中碰到的问题说明并记录一下 在网上买了1 69寸液晶显示模块 使用spi接口 分辨率240 280 给的参考程序是GPIO模拟的SPI接口 打算先移植到FreeRtos测试 再慢慢使用
  • STM32F207 I2C 测试失败

    我正在使用 STM32F207 微控制器在 STM3220G EVAL 板上学习嵌入式开发 我尝试通过连接同一芯片上的两个 I2C2 和 I2C3 模块并发送 接收字符来测试 I2C 接口 这是我当前编写的代码 使用 mdk arm 5 i
  • Freertos低功耗管理

    空闲任务中的低功耗Tickless处理 在整个系统运行得过程中 其中大部分时间都是在执行空闲任务的 空闲任务之所以执行 因为在系统中的其他任务处于阻塞或者被挂起时才会执行 因此可以将空闲任务的执行时间转换成低功耗模式 在其他任务解除阻塞而准
  • CMSIS & STM32,如何开始? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想在 STM32 上使用 CMSIS 启动项目 网上一搜 没找到具体的教程 有些使用 SPL 开始项
  • 库函数点亮Led

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 pandas是什么 二 使用步骤 1 引入库 2 读入数据 总结 前言 提示 这里可以添加本文要记录的大概内容 例如 随着人工智能的不断发展 机器学习这门
  • 核心耦合内存在 STM32F4xx 上可执行吗?

    尝试从 STM32F429s CCM 运行代码 但每当我命中 CCM 中的第一条指令时 我总是会遇到硬故障 并且 IBUSERR 标志被设置 该指令有效且一致 STM32F4xx 是否可能不允许从 CCM 执行 数据访问效果良好 alios
  • STM32 Nucleo 上的上升沿中断多次触发

    我正在使用 STM32 NUCLEO F401RE 微控制器板 我有一个扬声器 经过编程 当向上 向下推操纵杆时 可以按设定的量改变频率 我的问题是 有时 通常 当向上 向下推动操纵杆时 频率会增加 减少多次 这意味着 ISR 正在执行多次
  • 通过JTAG恢复STM32 MCU磨掉的标记

    我有一块可能带有 STM32 MCU 的板 我想为该板制作定制固件 因为库存板有很多问题 不幸的是 电路板制造商很友善地磨掉了所有标记 有没有办法通过 jtag 获取设备 系列 ID 并将其交叉引用到型号 我能找到的一切都是关于获取芯片的唯
  • STM32 上的 ADC 单次转换

    我正在研究 STM32 F103x 上的 ADC 编程 并从最简单的情况 单次转换开始 测量内部温度传感器 连接到 ADC1 的值 并使用 USART 将其发送到 COM 端口 目标似乎很明确 但是当我尝试将源代码下载到闪存时 它不会向 C
  • PWM DMA 到整个 GPIO

    我有一个 STM32F4 我想对一个已与掩码进行 或 运算的 GPIO 端口进行 PWM 处理 所以 也许我们想要 PWM0b00100010一段时间为 200khz 但随后 10khz 后 我们现在想要 PWM0b00010001 然后
  • STM32F0、ST-link v2、OpenOCD 0.9.0:打开失败

    我在用着发射台 http www ti com ww en launchpad about htmlgcc arm none eabi 4 9 2015q2 为 STM32F0 进行编译 现在我想使用该集合中的 arm none eabi
  • 移动数组中的元素

    我需要一点帮助 我想将数组中的元素向上移动一个元素 以便新位置 1 包含位置 1 中的旧值 new 2 包含 old 1 依此类推 旧的最后一个值被丢弃 第一个位置的新值是我每秒给出的新值 我使用大小为 10 的数组 uint32 t TE

随机推荐

  • 对象池简单理解

    unity中一些需要频繁创建和销毁的对象 在销毁时会频繁的调用gc 非常占用cpu时 造成性能瓶颈 这时候就需要对象池技术 使用对象池在销毁时并不调用gc 而是仅仅将需要销毁的obj失活 当再次创建同类对象时 在对象池中查找可以使用的对象进
  • C语言练习——输出字符串长度

    输出字符串长度 题目描述 代码实现 方法一 方法二 方法三 方法四 题目描述 写一个函数 求一个字符串的长度 在 main 函数中输入字符串 并输出其长度 代码实现 方法一 include
  • linux oracle 临时空间不足,oracle for linux服务器磁盘空间不足,通过过期的文件释放磁盘空间...

    2013 09 16截取的数据 使用df h命令查看系统磁盘空间 root erpdbs PROD df h Filesystem Size Used Avail Use Mounted on dev sda5 4 9G 241M 4 4G
  • CCPC2019河南省省赛总结:lwh

    之前的邀请赛突然变成省赛 多了次拿牌的机会 还挺开心的 然后旷了2节课和队友去打了网络赛 成绩还不错 应该能够拿个金 然后就是现场赛了 不知道什么原因 现场赛开始前推迟了20分钟 比赛开始 开始一眼望过去 学长选了题 签到题直接敲 样例过了
  • mysql 列名映射_[Mybatis] Mybatis处理列名->字段名映射(二) - AS用法 & ResultMap

    前言 考虑到在Select时使用AS和方案一其实没什么差别 在介绍ResultMap之前 顺便带过一下 方案二 Select AS 当我们的数据库列名和对象字段之间不是驼峰式命名的关系 我们可以在Select时使用AS 使得列名和对象名匹配
  • BTY Ecosystem DNS‘s Ideas of DeSoc

    In May 2022 Ethereum founder Vitalik Buterin economist Glen Weyl and Flashbots researcher Puja Ohlhaver jointly released
  • vue前端上传文件到COS

    1 main js中 COS相关的 Vue prototype loadi https images 1254950508 cos ap guangzhou myqcloud com a 1588390454918 loading gif
  • 计算机网络重点知识解析(1)

    总结一下计算机网络知识 文章目录 OSI七层网络协议 TCP IP协议模型 TCP协议 UDP协议 TCP和UDP协议的区别 RTT和RTO TCP的滑动窗口 TCP 拥塞控制 OSI七层网络协议 先来一张网络协议图 简单解释一下各个协议
  • 64位和32位相比优势是什么(一)

    前置知识 程序是如何执行的 一道常规的面试题 相比 32 位 64 位的优势是什么 面试官考察这种类型的问题 主要是想看求职者是否有扎实的计算机基础 同时想知道求职者在工作中是否充满好奇 会主动学习 寻根问底 毕竟 32 64 位是经常出现
  • [MATLAB]学习笔记

    目录 第一章 Matlab基础 1 1 Matlab介绍 1 2 界面使用 1 3 运算基础 1 4 数据基础 1 5 矩阵基础 第一章 Matlab基础 1 1 Matlab介绍 一 最新版本 MathWorks MATLAB R2021
  • Python和Java二选一该学啥?

    Java这种跨平台 可面向对象的编程语言完美解释了它不仅仅只是一种语言 而且自身很强大是一种开发平台 第一 学习过的大家可能都知道它的优势和特性有哪些 比如说它简单性 面向对象 分布式 解释型 可靠 安全 平台无关 可移植 高性能 多线程
  • 分享Visual Studio 2019专业版、企业版密匙

    官网下载地址 https visualstudio microsoft com zh hans downloads 点击进入 Professional产品密钥 NYWVH HT4XC R2WYW 9Y3CM X4V3Y Enterprise
  • 零基础初学前端—新建项目

    对于一个没有基础的新手来说 如何使用 vscode 新建一个前端项目 写一些html页面 并能进行运行 需要吐下几个步骤 新建一个文件夹 在文件夹里新建一个文件 命名为 xxx html 例如 index html 打开 vscode Fi
  • 【Windows】Windows下载使用wget命令

    文章目录 一 前言 介绍 二 安装步骤 2 1 下载 wget 压缩包 2 2 解压到指定的位置 2 3 检查是否安装成功 2 4 是否可以正常下载 一 前言 介绍 wget 是 linux 一个下载文件的工具 可以下载一些软件或从远程服务
  • centos7常用工具包安装

    1 nano yum install y nano 2 wget yum install y wget
  • MySQL的“插入”/“删除+插入”操作——REPLACE

    问题及背景 有一个数据表Table 主键为YYYY MM DD 年 月 日 形式的字符串 存储着本日某事件的信息 该信息每隔若干小时 会根据最新数据重新计算该信息 如果Table中已存在本日记录 需要对其进行 UPDATE 或 DELATE
  • 模型化公务员能力

    1 搜集信息 现象 在较大的行政管理对象中 信息失真是普遍现象 误区 地方统计上报的数据 只要各级管理人员认真负责 严格核实 怎么会有错误 对策 建立及时 真实 全面 立体的信息搜集和分析机制 2 办理公文 现象 领导的批示和交办的事项 往
  • Java System.arraycopy()方法示例

    Java System arraycopy is a native static method to copy elements from the source array to the destination array Java Sys
  • SQLserver 2008数据库迁移 - 导出 方法二 备份法

    前言 由于更换服务器 所以需要对数据库进行备份 到新服务器还原 收到数据库迁移的命令 登上服务器一看 一脸懵B SQLServer 2008完全没用过 于是开始查资料 各种百度 CSDN一顿查 方法一 保存脚本法 点此链接了解详情 方法二
  • keil报错:Symbol set_value multiply define和 incomplete type is not allowed和error:  #65: expected a “;“

    一个是重复定义 一个是不完整类型 一个是缺一个 第一个 重复定义 一般最多的就是两个文件中的变量定义重复而报错 一般这种改一下名就差不多了 而另一种就比较难看出来了 比如 定义一个结构体在sys h的文件中 并在文件中进行了定义和初始化 然