undefined reference to 问题的一种解决方法

2023-11-06

问题描述:今天在移植mcal中的部分代码时,然后进行编译,在链接的步骤里面,遇见了报错"undefined reference to xxx",未定义的函数被引用的问题,实际上那个函数是被定义了的,不过那个函数比较特殊,是一个被extern inline修饰的定义在头文件中的函数,是extern inline 函数。这种函数可以有两个定义的地方,一个是头文件中,另一个是c文件中,不过是这两个函数的内容必须一模一样,如果其他地方引用这个函数时,是以函数指针的形式进行引用,那么就需要在c文件中也有一个一模一样的定义,c文件中对这个函数的定义就是没有前面的extern inline进行修饰;如果这个函数都是进行普通的函数调用,那么不需要在另外的c文件中进行定义,只需要在头文件中有定义即可。

// lib.c
void libfunc()
{
    /* ... */
}
// lib.h
extern inline libfunc()
{
    /* ... */
}

这里回顾一下c语言的extern和inline相关知识

在C语言中,修饰符extern用在变量或者函数的声明前,用来说明“此变量/函数是在别处定义的,要在此处引用”。

extern可置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量或函数时,在其它模块中寻找其定义。另外,extern也可用来进行链接指定。

inline关键字是C99标准的关键字,其作用是将函数展开,把函数的代码复制到每一个调用处。这样调用函数的过程就可以直接执行函数代码,而不发生跳转、压栈等一般性函数操作。可以节省时间,也会提高程序的执行速度。

解决方法:设置编译器的优化选项,最开始是none无优化,设置为balanced后,可以成功编译通过。猜测是,编译器默认将inline进行了disable,由于函数名前面有打开优化选项后,编译器将inline进行了enable。

 本文参考内容:C 语言中的冷门知识点:extern inline 函数 - 知乎extern在c语言中是什么意思?_百度知道c语言inline有什么作用,C语言inline关键字_kyosanto的博客-CSDN博客

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

undefined reference to 问题的一种解决方法 的相关文章

  • 基于java的物资管理系统设计与实现

    基于java的物资管理系统设计与实现 I 引言 A 研究背景和动机 基于Java的物资管理系统设计与实现的研究背景和动机在于提高物资管理系统的效率和质量 使得物资管理系统更加便捷 快速 准确 从而提高物资管理的水平 该系统的设计和实现主要围
  • socket网络编程几大模型?看看CHAT是如何回复的?

    CHAT回复 网络编程中常见的有以下几种模型 1 阻塞I O模型 Blocking I O 传统的同步I O模型 一次只处理一个请求 2 非阻塞I O模型 Non blocking I O 应用程序轮询调用socket相关函数检查请求 不需
  • 【计算机毕业设计】电商个性化推荐系统

    伴随着我国社会的发展 人民生活质量日益提高 于是对电商个性化推荐进行规范而严格是十分有必要的 所以许许多多的信息管理系统应运而生 此时单靠人力应对这些事务就显得有些力不从心了 所以本论文将设计一套电商个性化推荐系统 帮助商家进行商品信息 在
  • 【计算机毕业设计】毕业生就业管理微信小程序_lm9q0

    腾讯公司在2017年1月19日发布了一款不需要下载 不需要卸载 不需要存储的软件叫微信小程序 受到了很多人的喜欢 微信小程序自2017年发布至今 依托微信的社交属性和庞大的用户基数 已经渗透到生活的方方面面 1 微信小程序可以将基于微信平台
  • Python自动化测试 | 如何使用Robot Framework进行自动化测试?

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • js中关于字符串的创建和判断类型

    文章目录 创建方法 判断类型的技巧 区分 1 typeof 2 instanceof 共点 1 Object prototype toSt
  • 2024诸多大厂春招提前启动!Android的程序员还在等什么

    春招 提前批 已开 xdm别打瞌睡了 格力 顺丰 酷狗 沃尔玛中国 理想 科大讯飞等开启春招 开始收简历了 还有hc的企业提前抢人 春招时间短 节奏快 招满即止 就算挂了也绝不能不投 对企业来说 秋招和春招都是储备人才的黄金时期 春招中 除
  • 最新整理Java面试八股文,大厂必备神器

    在看这篇文章之前 我想我们需要先搞明白八股文是什么 明清科举考试的一种文体 也称制义 制艺 时文 八比文 八股文章就四书五经取题 内容必须用古人的语气 绝对不允许自由发挥 而句子的长短 字的繁简 声调高低等也都要相对成文 字数也有限制 八股
  • 计算机Java项目|基于SSM的篮球系列网上商城设计与实现

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板
  • 计算机Java项目|基于SSM的微课学习系统

    作者主页 编程指南针 作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智
  • 计算机Java项目|电影购票系统

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板
  • 2024史上最全Java面试八股文(带全部答案)

    今天要谈的主题是关于求职 求职是在每个技术人员的生涯中都要经历多次 对于我们大部分人而言 在进入自己心仪的公司之前少不了准备工作 有一份全面细致 面试题 将帮助我们减少许多麻烦 在跳槽季来临之前 特地做这个系列的文章 一方面帮助自己巩固下基
  • 详解Java信号量-Semaphore

    第1章 引言 大家好 我是小黑 今天 咱们一起来深入探讨一下Semaphore 在Java中 正确地管理并发是一件既挑战又有趣的事情 当谈到并发控制 大家可能首先想到的是synchronized关键字或者是ReentrantLock 但其实
  • 【自适应滤波】一种接近最佳的自适应滤波器,用于突发系统变化研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码及文章
  • 详解toLowerCase(判断字符串相等)

    一 toLowerCase 函数简介 toLowerCase 是一个在多个编程语言中都存在的字符串方法 它的作用是将字符串中的所有大写字母转换为对应的小写字母 常用于文本处理 搜索和比较等情况 以确保字符串的一致性和非大小写敏感的操作 二
  • 【go语言】结构体数据填充生成md错误码文件

    这里使用pongo2这个模版引擎库进行md文件渲染 GitHub flosch pongo2 Django syntax like template engine for Go package main import fmt github
  • 【一种新的Burton-Miller型奇异边界方法(BM-SBM)】用于声学设计灵敏度分析,2D和3D声学设计灵敏度分析的奇异边界方法研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 2 1 2D 2 2 3D
  • 2024年华为OD机试真题-查找接口成功率最优时间段-Python-OD统一考试(C卷)

    题目描述 服务之间交换的接口成功率作为服务调用关键质量特性 某个时间段内的接口失败率使用一个数组表示 数组中每个元素都是单位时间内失败率数值 数组中的数值为0 100的整数 给定一个数值 minAverageLost 表示某个时间段内平均失
  • 计算机Java项目|有机蔬菜商城

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板
  • sychnorized积累

    sychnorized 1 对象锁 包括方法锁 默认锁对象为this 当前实例对象 和同步代码块锁 自己指定锁对象 2 类锁 指synchronize修饰静态的方法或指定锁对象为Class对象 3 加锁和释放锁的原理 现象 时机 内置锁th

随机推荐

  • 二叉树知识

    二叉树有两种主要的形式 满二叉树和完全二叉树 满二叉树 如果一颗二叉树只有度为0和度为2 并且度为0的节点都在同一层的二叉树就是满二叉树 这棵二叉树为满二叉树 也可以说深度为k 有2 k 1个节点的二叉树 完全二叉树 在完全二叉树 1 除了
  • 自动化测试框架selenium之webdriver

    目录 1 webwebdriver API 1 1 元素的定位 1 2 操作测试对象 1 3 添加等待 1 4 打印信息 1 5 浏览器的操作 1 6 键盘事件 1 7 鼠标事件 1 8 定位一组元素 1 8 多层框架的定位 1 8 多层窗
  • share memory 小结(qualcom )

    QUALIOMM 的AP和MODEM之间的share memory通过把共享内存的空间分成N个不定长的数据块 其中SMEM HEAP INFO记录每个数据块的地址信息 是否已经分配等 只能一个宿主先分配 当然SMEM HEAP INFO 本
  • 解决JPA中使用@Query注解无法使用limit分页函数__一蓑烟雨任平生

    项目中有使用到Spring Data JPA来做查询 在某个查询中 想用limit函数分页 如下 Transactional Query value select a id a even a createat a iot a reada f
  • 百度富文本编辑器插入html代码,百度富文本编辑器插入html代码

    Django 的富文本编辑器 想要用 首先 下载 pip install django tinymce 创建应用 python manage py startapp task 1 引入资源 2 显示UI 我做了一个文章管理的系统 使用到了百
  • Could not find an installed version of Gradle either in Android Studio, or on your system to install

    前言 在使用cordova时 要将html打包成安卓的apk 然后报错这个 这个是需要装gradle 下载入口 因为是高版本兼容低版本 所以随便下载个我用6 4的 步骤 1 下载gradle 2 添加环境变量 此电脑 gt 属性 gt 高级
  • Java8 新特性使用

    文章目录 lamda接口语法 内置函数式接口 方法引用 语法 使用要求 构造器引用以及数组引用 构造器引用 数组引用 Stream流 串行流和并行流 创建Stream流的四种方式 流的形式 中间操作 筛选和切片 映射 排序 终止操作 匹配与
  • element ui中表格输入框回车跳到另一输入框

    纯输入框的回车 组件代码
  • m与n的数字运算python_M与N的数学运算

    描述 用户输入两个数M和N 其中N是整数 计算M和N的5种数学运算结果 并依次输出 结果间用空格分隔 5种数学运算分别是 M与N的和 M与N的乘积 M的N次幂 M除N的余数 M和N中较大的值
  • Linux内核中 SPI以太网W5500问题

    Linux内核中 SPI以太网W5500问题 Linux内核驱动中将W5500 W5200和W5100集成到了一起 本人只用到了W5500 问题描述 绿灯LinkLED和黄灯ACTLED交替闪烁 而正常状态应该为LinkLED常亮 ifco
  • 物联网仪表ADW300无线通讯灵活安装

    安科瑞 戈静怡 随着物联网新兴技术的发展 边缘智能 无线通讯 物联协议等越来越多的被应用 智能电表顺势而为 应用物联网技术 发展成如今的智能终端 物联网电力仪表 ADW300无线计量仪表主要用于计量低压网络的三相有功电能 具有RS485通讯
  • Redis代码示例

    RedisTemplate 如果想要在java中使用Redis相关的数据结构 要先注入RedisTemplate Autowired private RedisTemplate
  • RISC-V单周期处理器设计(基本介绍和数据通路)(一)

    一 设计步骤 1 处理器设计的基本规范 指令 包括处理器需要具有那些功能 需要注意的是处理器的功能是由指令唯一确定 2 处理器设计方案 包括数据通路和控制器 数据通路 指令执行过程中 数据所经过的路径 包括路径中的部件 它是指令的执行部件
  • 搭建cocos2d游戏引擎环境HelloWorld!

    转载自 黑米GameDev街区 原文链接 http www himigame com iphone cocos2d 415 html 本章节主要介绍cocos2D引擎的开发环境搭建 第一步 下载cocos2d iphone最新版本 地址如下
  • 清华2019最新AI发展报告出炉!400页干货,13大领域一文看懂

    2019 12 08 20 36 36 当前 人工智能正处在爆发期 我国在人工智能领域的科学技术研究和产业发展起步稍晚 但在最近十余年的时间里抓住了机遇 进入了快速发展阶段 在这个过程中 技术突破和创造性高端人才对人工智能的发展起着至关重要
  • 腾讯6大核心业务打造坚固护城河

    1998年11月 腾讯公司成立 腾讯之名取自小马哥名字与 网络通讯 这一初始业务定位 创始人为马 张 陈 许 曾五人 作为公司长期的核心决策层 分工明确 团队稳定 2000年OICQ更名为QQ 03年腾讯进入游戏领域 04年在港上市 11年
  • Qt字符编码要点

    1 首先明确几种常用的编码 UTF 8 GBK UNICODE UNICODE 明确概念0 我是汉字 是C语言中的字符串 它是char型的窄字符串 上面的例子可写为const char str 我是汉字 QString a str 或QSt
  • Vue技术—列表过滤

    div h2 人员列表 h2 div
  • mysql连接字最多查询_MySQL中应该多表连接查询一次取数据库还是多次查询取数据?...

    MySQL中应该多表连接查询一次取数据库还是多次查询取数据 具体的case在下面 三个表的字段如下 webcast cast表 id organizerId title startDate endDate number date等 webc
  • undefined reference to 问题的一种解决方法

    问题描述 今天在移植mcal中的部分代码时 然后进行编译 在链接的步骤里面 遇见了报错 undefined reference to xxx 未定义的函数被引用的问题 实际上那个函数是被定义了的 不过那个函数比较特殊 是一个被extern