【问题标题】:Difference between intrinsic, inline, external in embedded system? [closed]嵌入式系统中内部,内联,外部之间的区别? [关闭]
【发布时间】:2017-07-06 15:48:06
【问题描述】:

我需要了解 C/C++ 编程中内在函数、内联函数和外部函数之间的区别。谢谢帮忙^^

【问题讨论】:

  • 没有 C/C++ 语言。
  • 为了完成@πάνταῥεῖ 所说的,表达式C/C++ 在 C 和 C++ 中都是 UB。 :)
  • @πάνταῥεῖ 您是说 C 和 C++ 在这个特定问题上有所不同吗?如果他们不这样做,我真的认为没有必要为每种语言设置一个问题。

标签: c++ c arm neon


【解决方案1】:

内在函数

是编译器在可能的情况下直接实现的函数,而不是调用库中的实际函数。 例如,它们可用于优化或实现特定的硬件功能。

对于 ARM,它们存在一个称为“__nop()”的内部函数(以及许多其他函数),它插入一条 NOP(无操作)指令。

查看以下链接了解更多信息

http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0205g/Ciabijcc.html

What are intrinsics?

https://en.wikipedia.org/wiki/Intrinsic_function

外部函数

告诉编译器某些东西是在别处定义的,所以它不会抱怨未定义或被多重定义

尽管在 C 或 C++ 中声明函数时几乎不需要使用关键字 extern,因为它们通常默认以这种方式链接。

查看以下链接了解更多信息

Extern functions in C vs C++

http://www.cplusplus.com/forum/general/21368/

内联函数

内联函数是编译器使用的一种优化技术,尤其是用于减少执行时间。 例如,如果您有一个带有一个输入参数的小函数(未声明为内联),并且您多次调用此函数。 处理器将(除其他外)

  1. 保存参数
  2. 跳转到函数
  3. 执行函数
  4. 存储结果(如果有)
  5. 跳回上一个位置

如果函数是内联的,它会将调用语句替换为函数代码本身,然后编译代码。

查看以下链接了解更多信息

http://www.cplusplus.com/articles/2LywvCM9/

https://en.wikipedia.org/wiki/Inline_function

http://www.cprogramming.com/tutorial/lesson13.html

在主要搜索引擎上还有几个链接可用。

【讨论】:

  • 虽然只有链接的答案不受欢迎,但这个比操作更努力! +1
  • 谢谢你的回复,但不明白如何使用内在函数?请给我一个例子好吗?
  • @Colin__s 这不是这样工作的......幸运的是答案得到了扩展
猜你喜欢
  • 2014-01-29
  • 2016-12-01
  • 2018-09-10
  • 2016-12-20
  • 2013-11-02
  • 2013-01-14
  • 2017-05-05
  • 2011-07-29
  • 1970-01-01
相关资源
最近更新 更多