在我的项目中,我有一些"界面"我的头文件中定义的函数。但是我有更多的功能只在内部用于同一个源文件。所以在任何头文件中也没有函数声明。
将它们声明为inline
是不错的做法?由于内联函数的性能更好,对我来说这听起来不错。或者有任何缺点吗?我知道可执行文件的大小可能会更大,但这对我来说没问题。
答案 0 :(得分:4)
不在不同翻译单元中共享的本地功能应被视为static
inline
说明符指示编译器内联函数(如果可以)但不强制内联。如果您要求编译器使用forceinline
或__forceinline
内联函数,则强制进行内联。
无论如何,当内联函数认为这并不总是最好的解决方案。您应该仔细检查代码的整体性能。内联过程将函数的代码合并到调用代码中。这需要一些寄存器可用性来执行计算而不会干扰主要执行。有时,寄存器搜索过程需要临时存储当前值等,这可能会降低代码的整体效率
内联是一个很短的过程,在主代码中执行所需的时间少于调用序言和结尾所需的时间。
答案 1 :(得分:3)
不要犹豫,只需将它们标记为static inline
即可。
请注意,标记为inline
的函数不必内联。它由编译器决定是否内联。现代编译器是聪明的"足够,所以只需让你的编译器做出决定,这是值得信赖的。
答案 2 :(得分:3)
inline
只是对编译器的一个提示。如果指定inline
,编译器可能会选择不遵守该提示。如果未指定inline
,编译器可能会选择内联函数。