假设我在我的预编译头文件中包含一个头文件,其中包含一堆内联函数,可在项目的任何 TU 中任何需要的地方用作帮助程序——编写这些内联的正确方法是什么?
1)作为静态内联?例如:
static inline BOOL doSomethingWith(Foo *bar)
{
// ...
}
2)作为外部内联?例如:
在 Shared.h
extern inline BOOL doSomethingWith(Foo *bar);
在 Shared.m
inline BOOL doSomethingWith(Foo *bar)
{
// ...
}
我对内联的意图是:
- 通过封装通用指令使代码不那么冗长
- 集中它们包含的代码以帮助未来的维护
- 为了类型安全而使用它们而不是宏
- 能够有返回值
到目前为止,我只在野外看到过变体 1)。我已经读过(遗憾的是再也找不到它了)变体 1)没有准确地将内联函数的主体移动到调用者中,而是创建了一个新函数,这只能extern inline
确保这种行为。