我遇到了一个 C 函数的示例,声明为:
static inline CGPoint SOCGPointAdd(const CGPoint a, const CGPoint b) {
return CGPointMake(a.x + b.x, a.y + b.y);
}
到目前为止,我在 .h 文件中声明实用程序 C 函数并在 .m 文件中实现它们,如下所示:
CGPoint SOCGPointAdd(const CGPoint a, const CGPoint b) {
return CGPointMake(a.x + b.x, a.y + b.y);
}
我可以在任何我想要的地方“内联”使用这个函数,它也应该是“静态”的,因为它不与任何对象关联,就像 Objective-c 方法一样。指定“静态”和“内联”的要点/优点是什么?
inline
并不意味着您可以“内联”使用函数(在其他函数内部使用函数是正常的;您不需要inline
为了那个原因);它鼓励编译器将函数构建到使用它的代码中(通常是为了提高执行速度)。
static
表示函数名称没有外部链接。如果函数没有声明static
,编译器需要使其外部可见,以便它可以与其他目标模块链接。为此,编译器必须包含该函数的一个单独的非内联实例。通过声明函数static
,您允许将其所有实例内联到当前模块中,可能不会留下单独的实例。
static inline
通常与小函数一起使用,这些小函数在调用例程中比使用调用机制更好地完成,仅仅是因为它们如此短且快,以至于实际执行它们比调用单独的副本更好。例如。:
static inline double square(double x) { return x*x; }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)