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

C inline all functions in source file

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

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

不要犹豫,把它们标记为static inline就可以了。

请注意,标记为 inline 的函数不需要 内联。是否内联就交给编译器来判断了。现代编译器"clever"就够了,所以让你的编译器自己做决定,这是值得信赖的。

inline 只是对编译器的提示。如果您指定 inline ,编译器可能会选择不接受该提示。如果不指定 inline,编译器可能会选择内联函数。

参见6.7.4 (p6) in the C11 Standard

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