extern关键字的使用。keil中编译时,出现error:identifier xxx is undefined

news2024/10/6 10:27:28

问题

编译时,出现error: identifier “Reg_Flag” is undefined
extern Reg_Flag reg_flag;

很奇怪,我明明已经定义了。无非就是定义是在extern的下面,会不会是这个原因?
在这里插入图片描述

解决

果然,把extern的部分放到结构体定义的下面之后,编译成功了。那这是为什么呢?

typedef struct {
    uint8_t DO1;    
    uint8_t DO2;    
    // 更多成员...
} Reg_Flag;

extern Reg_Flag reg_flag; 

搜索之后了解到:extern关键字用来告诉编译器相应的变量在其他地方定义,但编译器需要在使用extern之前就了解这些变量的类型。如果在使用extern声明变量之前没有定义相应的类型,编译器就不知道这些标识符代表什么类型的变量,从而引发“未定义标识符”的错误。

当把extern声明移动到相应的结构体类型定义之后,编译器已经识别了这些类型,因此能够正确地识别extern声明的变量类型。

补充

'extern’关键字:用于声明一个变量或函数是在别处定义的,意味着它告诉编译器期望在其他地方找到这个变量或函数的定义。
【注】
(1)首先要确保使用’extern’关键字引用的变量的类型都已经被定义。
(2)类型定义后,再用’extern’声明这些外部变量,这样编译器能够理解这些变量的完整类型信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1658062.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

类和对象test

一、初始化列表 引言: 虽然上述构造函数调用之后,对象中已经有了一个初始值,但是不能将其称为对对象中成员变量 的初始化,构造函数体中的语句只能将其称为赋初值,而不能称作初始化。因为初始化只能初始 化一次&#x…

[华为OD] C卷 田忌赛马 DFS 200

题目: 给定两个只包含数字的数组a, b,调整数组a里面数字的顺序,使得尽可能多的a[i] >b[i]。 数组a和b中的数字各不相同。 输出所有可以达到最优结果的a数组的数量 输入描述 输入的第一行是数组a中的数字,其中只包含数字,每…

网页主题自动适配:网页跟随系统自动切换主题

主题切换是网站设计中一个非常有趣的功能,它允许用户在多种预先设计的样式之间轻松切换,以改变网站的视觉表现。最常见的就是白天和黑夜主题的切换,用户可以根据自己的喜好进行设置。 除了让用户手动去切换主题外,如果能够让用户第…

2024年3月份宠物行业线上市场数据分析:市场呈现出精细化、品质化趋势

近些年来,养宠物的家庭越来越多,宠物经济也逐渐衍生开来。宠物经济主要是围绕宠物产生的一整条产业链,包括宠物食品、宠物家居、宠物美容和最近火起来的宠物保险等多个领域。目前随着居民人均收入的提高,宠物市场也得到稳步发展。…

PC端网页特效异读

pc网页特效 一、三大系列1.元素偏移量(offset系列)(1)一些属性(2).offset和style的区别(3).一些例子 2.元素可视区(client系列)(1).一些属性(2).flexible.js源码分析 3.scroll系列(4).三大系列小结 其他&am…

YOLOv9改进策略 | 添加注意力篇 | 一文带你改进GAM、CBAM、CA、ECA等通道注意力机制和多头注意力机制

一、本文介绍 这篇文章给大家带来的改进机制是一个汇总篇,包含一些简单的注意力机制,本来一直不想发这些内容的(网上教程太多了,发出来增加文章数量也没什么意义),但是群内的读者很多都问我这些机制所以单…

雷伴品鉴【神农式】倪琴 倪诗韵古琴

雷伴品鉴【神农式】倪琴 倪诗韵古琴 此琴材质为老杉木音色细腻,下指按弹舒适,手感极好漆面精美,线条流畅。

一文搞懂 ARM 64 系列: ADC

1 指令语法 adc <Xd>, <Xn>, <Xm> 2 指令语义 adc就是带「进位」加法&#xff0c;指令中的c就是英文carry。 整个指令等价于: (Xd, _) Xn Xm PSTATE.C 也就是将寄存器Xn&#xff0c;寄存器Xm&#xff0c;PSTATE中的「进位」标志相加&#xff0c;将相加的…

元素设置 flex:1,但是会被内部长单词宽度超出拉伸

初始布局如上图&#xff0c;left中是代码编辑器&#xff0c;实际上是个文本域&#xff0c;当输入长文本过长时&#xff0c;left宽度会被拉伸。 右侧容器被挤压。 解决方案&#xff1a;width&#xff1a;0&#xff1b; .left{flex:1; width:0} 当输入长文本过长时&#xff0c…

二分查找向下取整导致的死循环69. x 的平方根

二分查找向下取整导致的死循环 考虑伪题目&#xff1a;从数组arr中查找出目标元素target对应的下标&#xff0c;如果数组中不存在目标元素&#xff0c;找 到第一个元素值小于target的元素的下标。 编写二分查找算法如下&#xff1a; Testvoid testBinarySearch(){int[] arr n…

HackBar 新手使用教程(入门)

啥是Hackbar&#xff1f; Hackbar是一个Firefox 的插件,它的功能类似于地址栏,但是它里面的数据不受服务器的相应触发的重定向等其它变化的影响。 有网址的载入于访问,联合查询,各种编码,数据加密功能。 这个Hackbar可以帮助你在测试SQL注入,XSS漏洞和网站的安全性,主要是帮助…

车载测试___面试题和答案归纳

车载面试题 一、实车还在设计开发阶段&#xff0c;大部分测试通过什么测试&#xff1f; 答案&#xff1a;通过台架和仿真来完成的 二、测试部分划分&#xff1f; 测试部门是分为自研&#xff0c;系统&#xff0c;验收&#xff0c;自研部门是开发阶段测试&#xff0c;系统部门…

「网络流 24 题」餐巾计划【费用流】

「网络流 24 题」餐巾计划 思路 我们先建立超级源点 S S S 和超级汇点 T T T&#xff0c;对于每一天&#xff0c;我们将其拆分成两个点 A i A_i Ai​ 和 B i B_i Bi​&#xff0c;其中 A i A_i Ai​ 表示这一天实际消耗的餐巾&#xff0c;连边 S → ∞ A i S \stackrel{…

关于线程池,它的扩展问题你知道吗?(自己总结)

专门想一下为什么线程池不用Excutors&#xff0c;之前的印象是错的&#xff0c;居然还拿来面试里讲&#xff0c;惭愧&#xff0c;这里暂时整理俩小问题&#xff0c;其他的后续可能会更新。。 线程池是创建的越大越好嘛 #线程池创建的越大越好吗 Tip&#xff1a;2024-04-10 更…

车载测试系列:车载以太网测试(一)

汽车行业对可靠性和安全性要求越来越高&#xff0c;车载以太网在应用过程中&#xff0c;为了保证其可靠性与安全性&#xff0c;需要对其开展测试工作。 传统的以太网测试和车载以太网测试存在一定差异&#xff0c;传统以太网测试方法并不适用汽车以太网测试。 汽车行业对测试…

C++ 直接初始化 和 拷贝初始化 的区别

参考链接&#xff1a;https://www.jb51.net/article/54773.htm这篇文章主要介绍了C直接初始化与复制初始化的区别深入解析,是很多C初学者需要深入了解的重要概念,需要的朋友可以参考下https://www.jb51.net/article/54773.htm

Web3空投入门:如何增加空投成功的几率

今天分享空投如何避免限制以提高效率&#xff0c;增加成功几率&#xff0c;首先我们来了解什么是空投加密&#xff0c;有哪些空投类型。 一、什么是空投加密&#xff1f; 加密货币空投是一种营销策略&#xff0c;包括向用户的钱包地址发送免费的硬币或代币。 加密货币项目使用…

UE5 audio capture 回声问题 ||在安卓上有爆鸣声

参考视频 0.基本步骤 【UE4_蓝图】录制麦克风声音/系统声音并输出保存WAV文件_ue4录音-CSDN博客 1.步骤 1.创建Sound Submix A 2. 右键新建Sound Submix B 3.把B的两个参数调为-96 4.audio capture的Base Submix&#xff0c;把前面提到的A赋值进去 5.开始录制输出和完成录制…

云动态摘要 2024-05-09

给您带来云厂商的最新动态&#xff0c;最新产品资讯和最新优惠更新。 最新优惠与活动 [免费试用]即刻畅享自研SaaS产品 腾讯云 2024-04-25 涵盖办公协同、营销拓客、上云安全保障、数据分析处理等多场景 云服务器ECS试用产品续用 阿里云 2024-04-14 云服务器ECS试用产品续用…

Android虚拟机机制

目录 一、Android 虚拟机 dalvik/art&#xff08;6版本后&#xff09;二、Android dex、odex、oat、vdex、art区别 一、Android 虚拟机 dalvik/art&#xff08;6版本后&#xff09; 每个应用都在其自己的进程中运行&#xff0c;都有自己的虚拟机实例。ART通过执行DEX文件可在设…