7 c static inline c99 function-declaration
我注意到两者都有效,在这里使用内联的正确方法是什么?
static inline int getAreaIndex()
Run Code Online (Sandbox Code Playgroud)
或者
inline static int getAreaIndex()
Run Code Online (Sandbox Code Playgroud)
另外,getAreaIndex 包含一个大循环。有时我只调用一个,有时我通过循环调用它,我应该内联它吗?(它有 10 行高)
在这里使用内联的正确方法是什么
双方static inline并inline static允许他们意味着同样的事情。static inline是首选风格。
我应该内联这个函数吗
要回答这个问题,您需要以两种方式对您的程序进行基准测试,并找出哪个更快。
来自 C 标准(6.7 声明)
\n\ndeclaration:\n declaration-specifiers init-declarator-listopt ;\n static_assert-declaration\n\ndeclaration-specifiers:\n storage-class-specifier declaration-specifiersopt\n type-specifier declaration-specifiersopt\n type-qualifier declaration-specifiersopt\n function-specifier declaration-specifiersopt\n alignment-specifier declaration-specifiersopt\nRun Code Online (Sandbox Code Playgroud)\n\n这意味着您可以按任何顺序指定声明说明符。
\n\n例如,下面显示的所有函数声明都声明相同的函数。
\n\n#include <stdio.h>\n\nstatic inline int getAreaIndex( void );\ninline static int getAreaIndex( void );\nint static inline getAreaIndex( void );\nstatic int inline getAreaIndex( void );\ninline int static getAreaIndex( void )\n{\n return 0;\n}\n\n\nint main(void) \n{\n return 0;\n}\nRun Code Online (Sandbox Code Playgroud)\n\n至于内联函数说明符则根据 C 标准(6.7.4 函数说明符)
\n\n\n\n\n6 使用内联函数说明符声明的函数是内联函数。将 \xe2\x88\x97 函数设为内联函数建议对该函数的调用尽可能快。138)此类建议的有效程度是由实现定义的。
\n
还有一个脚注
\n\n\n\n\n139) 例如,实现可能永远不会执行内联替换,或者可能仅对内联声明范围内的调用执行内联替换
\n
请注意,您应该指定为函数参数void。否则,编译器将决定参数的数量和类型是从函数调用中推导出来的。
| 归档时间: |
|
| 查看次数: |
577 次 |
| 最近记录: |