静态,extern和内嵌在Objective-C(Static, extern and inline

2019-06-27 02:38发布

什么是staticexterninline (和它们的组合)中使用LLVM编译器Objetive-C是什么意思?

另外,我注意到,有CG_EXTERNCG_INLINE宏。 我们应该利用这些呢?

(我无法找到一个明确的解释的来源,所以我想如果有人知道一个可能是有用的创建到一个位置,或点)

Answer 1:

什么静态,extern和内联(和它们的组合)中使用LLVM编译器Objetive-C是什么意思?

同在C,除非你编译为ObjC ++ - 那么他们的意思是C ++中的相同。

因此,这里是对C的介绍,但读的链接,如果你已经准备好使用这些,因为细节很重要:


外部

总结: 表示的标识符别处定义。

详细信息: http://tigcc.ticalc.org/doc/keywords.html#extern

静态的

摘要(值): 保留变量值的范围结束后存活下来。

摘要(功能):有效发射无名份 - 一种在C私人功能是有用的,并且可以使用具有内联函数使用时逸出多个定义错误。

详细信息: http://tigcc.ticalc.org/doc/keywords.html#static

排队

摘要:提出了一种函数体应该被移动到呼叫者。

详细信息: http://tigcc.ticalc.org/doc/gnuexts.html#SEC93


请注意,内联和静态在C ++(如几乎所有的C ++)更复杂了不少。

我还发现,有CG_EXTERN和CG_INLINE宏。 我们应该利用这些呢?

没有。

相反,你应该指定你自己,用自己的含义,如果你需要这种类型的功能。 CG_EXTERNCG_INLINE有特定的含义(可以改变),并意味着其定义的上下文中使用-而且,你不希望有包括框架的整体少数(所有CoreGraphics中/ ApplicationServices /的CoreFoundation /等。 )当你想指定东西extern中,在C和C ++的工作方式。



Answer 2:

贾斯汀涵盖了大多数,但我发现,对于那些谁想要深入挖掘其它的一些资源:

通过声明一个内联函数,你告诉编译器替换功能的完整代码直接进入从那里被称为地方。 这是一个相当高级的功能,需要低级编程的理解。

内联函数


这太问题具有约的extern变量产生巨大的答案-变量定义的“别处” -但也需要被用于“这里”。


静态保留的范围之内可变的生活。 变量是它被宣布范围内可见。

什么是一个静态变量是什么意思?




文章来源: Static, extern and inline in Objective-C