嵌入式系统中内在,内联,外部的区别?

时间:2017-02-17 08:03:01

标签: c++ c arm neon

我需要了解C / C ++编程中内在函数,内联函数和外部函数之间的区别。 Thnx寻求帮助^^

1 个答案:

答案 0 :(得分:2)

内在功能

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

对于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. 跳回上一个位置
  6. 相反,如果函数是内联的,它将用函数代码本身替换call语句,然后编译代码。

    有关详细信息,请参阅以下链接

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

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

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

    主要搜索引擎上还有其他几个链接。