hpi*_*que 29 static inline objective-c llvm extern
做什么static
,extern
并且inline
(和它们的组合)使用LLVM编译器Objetive-C是什么意思?
另外,我注意到有CG_EXTERN
和CG_INLINE
宏.我们应该使用那些吗?
(我找不到一个有明确解释的来源,所以我认为在这里创建一个可能有用,或者如果有人知道它可能会指向它)
jus*_*tin 33
使用LLVM编译器在Objetive-C中表示static,extern和inline(及其组合)是什么意思?
与C中相同,除非您编译为ObjC++ - 然后它们与C++中的相同.
所以这里是C的介绍,但如果你准备好使用它们,请阅读链接,因为细节很重要:
EXTERN
摘要:表示标识符已在其他位置定义.
详细信息: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_EXTERN
并且CG_INLINE
具有特定的含义(可能会改变),并且意味着在其定义的上下文中使用 - 同样,您不希望包含一小撮框架(所有CoreGraphics/ApplicationServices/CoreFoundation /等).你想要指定一些extern
在C和C++中工作的方式.
Justin涵盖了大部分内容,但我为那些想深入挖掘的人找到了一些其他不错的资源:
通过声明内联函数,您可以告诉编译器将该函数的完整代码直接替换为调用它的位置.这是一个相当高级的功能,需要了解低级编程.
这个SO问题对外部变量有很大的答案- 变量定义为"其他地方" - 但也需要在"这里"使用.
静态保留范围之外的可变寿命.变量在声明的范围内可见.
归档时间: |
|
查看次数: |
15335 次 |
最近记录: |