为什么inline 函数定义在头文件.h中

这篇具有很好参考价值的文章主要介绍了为什么inline 函数定义在头文件.h中。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、是不是Inline函数只能定义在.h中?

答案:不是。你可以在A.c 和 B.c里重复定义一个inline void func()函数给A.c和B.c用。

二、为什么inline函数只能定义在.h中?

答案:因为可以解决所用调用inline函数的所有.c文件反复定义该inline函数,inline函数具有局部可见性。编译器不会生成inline函数的链接符号,inline函数只会直接替换代码(类似与宏)。

The definition of an inline function doesn't have to be in a header file but, because of the one definition rule (ODR) for inline functions, an identical definition for the function must exist in every translation unit that uses it.

相反,如果非inline函数定义在.h中。如果该.h被多个.c文件包含时,编译器会报重复定义。

如果非inline函数,是在.h中声明,在.c中定义。

而inline函数在.h中定义。

参考:

[Solved]-Why are C++ inline functions in the header?-C++

Why are C++ inline functions in the header? - Stack Overflow

重新认识C++的inline关键字 - 知乎

为什么在 C++ 中 inline 函数要在头文件中定义_inline函数定义在头文件__Nino的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-685469.html

到了这里,关于为什么inline 函数定义在头文件.h中的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言文本为什么不包括库函数和预处理命令

    C语言的文本不包括库函数和预处理命令 是因为库函数和预处理命令并不是C语言本身的一部分, 它们是由 C语言标准库 和 预处理器 提供的功能。 C语言 标准库 是一组预定义的函数和常量, 用于提供常见的功能,如输入输出、字符串处理、数学计算等。 这些库函数是由C语言

    2024年02月09日
    浏览(43)
  • 【C语言】scanf和strcpy这类关键字和函数为什么不安全,使用VS编译会报错

    首先先说解决方法: 在程序最顶端加入这个代码段 这主要是微软的 C 运行时库实现将这些函数标记为不安全,主要原因是这些函数缺乏对输入长度的边界检查,容易导致缓冲区溢出漏洞。 会产生这样的报错: 即: C4996    \\\'strcpy\\\': This function or variable may be unsafe. Consider usin

    2024年02月14日
    浏览(56)
  • 【Linux操作系统】编译过程中遇到的问题-为什么加-c?执行文件提示无法执行二进制文件?main函数参数argc和*argv[]的作用和理解?

    在使用GCC编译器进行程序开发时,我们经常会遇到一些编译过程中的问题, 比如为什么要加上\\\"-c\\\"选项,以及为什么生成的可执行文件无法执行等问题。 本篇博客将详细介绍这些问题,并给出相应的代码和解释,帮助读者更好地理解GCC编译过程中的\\\"-c\\\"选项和main函数的参数a

    2024年02月12日
    浏览(63)
  • cron定义的脚本为什么不执行

    当 Cron 任务无法正常执行时,可能有几个常见的问题和解决步骤需要检查。以下是一些可能的原因及其对应的解决方案: 路径中的空格和特殊字符 : 路径中包含非英文字符或空格(如 /home/sunyuhua/桌面/jiaoben_new/tongji_new_23.sh 中的“桌面”),这可能会导致 Cron 解析错误。在路

    2024年04月13日
    浏览(44)
  • 为什么很多人禁用拷贝(复制)构造函数

    关于C++的拷贝构造函数,很多的建议是直接禁用。为什么大家会这么建议呢?没有拷贝构 造函数会有什么限制呢?如何禁用拷贝构造呢?这篇文章对这些问题做一个简单的总结。 这里讨论的问题以拷贝构造函数为例子,但是通常赋值操作符是通过拷贝构造函数来实现 的(

    2024年02月01日
    浏览(70)
  • Fragment为什么不用构造函数传递参数?

    Fragment 的构造方法通常不建议直接传递参数。我们先来看一下Fragment源码: 在源码中会发现,Fragment的构造函数是空的,所以他和普通类的创建对象的方式不太一样。接着我们看源码:

    2024年01月24日
    浏览(75)
  • 为什么使用ioutil.ReadAll 函数需要注意

    当我们需要将数据一次性加载到内存中, ioutil.ReadAll 函数是一个方便的选择,但是 ioutil.ReadAll 的使用是需要注意的。 在这篇文章中,我们将首先对 ioutil.ReadAll 函数进行基本介绍,之后会介绍其存在的问题,以及引起该问题的原因,最后给出了 ioutil.ReadAll 函数的替代操作。

    2024年02月13日
    浏览(45)
  • 为什么 Python 代码在函数中运行得更快?

    哈喽大家好,我是咸鱼 当谈到编程效率和性能优化时,Python 常常被调侃为“慢如蜗牛” 有趣的是,Python 代码在函数中运行往往比在全局范围内运行要快得多 小伙伴们可能会有这个疑问:为什么在函数中运行的 Python 代码速度更快? 今天这篇文章将会解答大家心中的疑惑 原

    2024年02月08日
    浏览(58)
  • C#为什么非要把函数叫方法?

    引子 \\\"某呼\\\"网友提问“C#为什么非要把函数叫方法?”,看到这个问题还真不知道怎么回答。要想知道C#为什么叫方法,还得从传统面向过程语言说起。 方法的由来 函数(function)是面向过程编程语言里,对可以独立调用代码段的另一种叫法,因为通常有数个输入和一个输出

    2024年02月09日
    浏览(41)
  • 为什么js中不推荐使用eval函数

    \\\'eval\\\'函数是javascript中的一个内置函数,它的主要作用是将传入的字符串作为代码来执行。换句话说,\\\'eval\\\'可以将动态生成的字符串当作javascript代码来执行,并返回执行结果。 我的理解就是它可以执行传入的代码,并返回执行结果。 \\\'eval\\\'可以执行任何传入的字符串,所以意味

    2024年02月08日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包