Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C在源文件中内联所有函数_C_Inline - Fatal编程技术网

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

C在源文件中内联所有函数,c,inline,C,Inline,在我的项目中,我有一些在头文件中定义的接口函数。但是我有更多的函数,它们只在同一个源文件中内部使用。因此,在任何头文件中也没有函数声明 将它们声明为内联是一种好的做法吗?因为内联函数的性能更好,所以我觉得这是个好主意。还是有什么缺点?我知道可执行文件的大小可能会变大,但这对我来说没问题。不要犹豫,只要根据需要将它们标记为静态内联即可 请注意,标记为inline的函数不是必需的inline。由编译器来判断是否将其内联。现代编译器已经足够聪明了,所以只需让您的编译器做出自己的决定,这是值得信赖的。内

在我的项目中,我有一些在头文件中定义的接口函数。但是我有更多的函数,它们只在同一个源文件中内部使用。因此,在任何头文件中也没有函数声明


将它们声明为内联是一种好的做法吗?因为内联函数的性能更好,所以我觉得这是个好主意。还是有什么缺点?我知道可执行文件的大小可能会变大,但这对我来说没问题。

不要犹豫,只要根据需要将它们标记为静态内联即可

请注意,标记为inline的函数不是必需的inline。由编译器来判断是否将其内联。现代编译器已经足够聪明了,所以只需让您的编译器做出自己的决定,这是值得信赖的。

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


请参阅。

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

将它们声明为静态是一个很好的做法。那么,如果我指定内联或不指定内联,是否真的会有区别呢?@ThomasSparber通过添加内联。如果没有这个建议,函数就不会内联。