C内联源文件中的所有函数

时间:2016-03-22 15:48:01

标签: c inline

在我的项目中,我有一些"界面"我的头文件中定义的函数。但是我有更多的功能只在内部用于同一个源文件。所以在任何头文件中也没有函数声明。

将它们声明为inline是不错的做法?由于内联函数的性能更好,对我来说这听起来不错。或者有任何缺点吗?我知道可执行文件的大小可能会更大,但这对我来说没问题。

3 个答案:

答案 0 :(得分:4)

不在不同翻译单元中共享的本地功能应被视为static inline说明符指示编译器内联函数(如果可以)但不强制内联。如果您要求编译器使用forceinline__forceinline内联函数,则强制进行内联。
无论如何,当内联函数认为这并不总是最好的解决方案。您应该仔细检查代码的整体性能。内联过程将函数的代码合并到调用代码中。这需要一些寄存器可用性来执行计算而不会干扰主要执行。有时,寄存器搜索过程需要临时存储当前值等,这可能会降低代码的整体效率 内联是一个很短的过程,在主代码中执行所需的时间少于调用序言和结尾所需的时间。

答案 1 :(得分:3)

不要犹豫,只需将它们标记为static inline即可。

请注意,标记为inline的函数不必内联。它由编译器决定是否内联。现代编译器是聪明的"足够,所以只需让你的编译器做出决定,这是值得信赖的。

答案 2 :(得分:3)

inline只是对编译器的一个提示。如果指定inline,编译器可能会选择不遵守该提示。如果未指定inline,编译器可能会选择内联函数。

请参阅6.7.4 (p6) in the C11 Standard