c++ - 嵌入式系统中固有、内联、外部的区别?

标签 c++ c arm neon

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

最佳答案

内在函数

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

对于 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

主要搜索引擎上还提供了更多链接。

关于c++ - 嵌入式系统中固有、内联、外部的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42292486/

相关文章:

c++ - 带有反调试代码的第三方库

c++ - 在 C++ 中暂停 - 哪种方法?

c++ - 多文件后端和严重性

assembly - ARM 的 MOV 指令如何以大数作为第二个操作数?

c++ - 为不可复制对象选择构造函数

c - 一个未初始化的变量可能有一个未定义的值,但那个未定义的值是否具有相同的数据类型?

c - 无法通过 C 中的套接字通过写入和读取函数发送 char 数组

assembly - 如何知道程序入口点是ARM还是Thumb模式

assembly - ARM ;或开关;汇编;

python - 使用 cython 从 c 调用 python 代码