什么时候应该使用 #ifdef 而不是 if()?
在 Objective-C 中工作时,什么时候适合使用预处理器指令,例如 #ifdef
、#if
、#ifndef
和 #define
而不是 if() 等语句
和 switch()
?
When working in Objective-C, when is it appropriate to use preprocessor directives like#ifdef
, #if
, #ifndef
, and #define
instead of statements like if()
and switch()
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
像#ifdef 等预处理器指令仅在编译时有效。他们无法在运行时做出决定或循环。它们只是简单地规定哪些内容被编译,哪些内容不被编译。
它们在运行时完全没用。它们服务于完全不同的目的。
Preprocessor directives like
#ifdef
, etc. are only valid at compile time. They are not able to make decisions or loops at runtime. They simply regulate what gets compiled and what not.They are totally useless at runtime. They serve a totally different purpose.
这些都是 C 语言的一部分,这里没有任何特定于 Objective-C 的内容。
大多数时候,在程序逻辑中,您将使用开关、if-else、fors、while 等。这适用于 C、C++、Objective-C 和其他 C 风格语言。
预处理器指令是在编译时评估的,因此只有预处理器/编译器对该逻辑感兴趣。您的实际程序不处理这些问题。除了架构差异、编译时常量、宏等内容之外,您不会过多使用指令。
These are all part of the C language, there's nothing specific to Objective-C here.
Most of the time in your program logic you're going to be using switches, if-elses, fors, whiles, etc. This applies to C, C++, Objective-C and other C-style languages.
Preprocessor directives are evaluated at compile-time, and so only the preprocessor/compiler is interested in that logic. Your actual program doesn't deal with any of this. You're not going to use directives much except for stuff like architecture differences, compile-time constants, macros and so on.