【问题标题】:#define a global preprocessor directive in a separate file in Objective-C#在Objective-C的单独文件中定义一个全局预处理器指令
【发布时间】:2015-09-09 08:36:27
【问题描述】:

我想在我的应用程序中定义一个全局预处理器指令。例如:

MyProgram.h 中,我定义:

#define USE_LOCALHOST

我从 appDelegate.m 开始导入这个文件。

为了以后使用,在另一个文件中,我引用了这个全局预处理指令。

MyWebService.h 中,我定义:

#ifdef USE_LOCALHOST
static NSString *MY_SERVER = @"http://192.168.1.130:8888";
#else
static NSString *MY_SERVER = @"http://myserver.com";
#endif

但是,MY_SERVER 的值始终为 @"http://myserver.com"。如何让它正常工作?谢谢。

【问题讨论】:

  • USE_LOCALHOST, USE_LOCAL_HOST?
  • 抱歉,我刚刚编辑了我的帖子。还是同一个问题。

标签: ios objective-c c-preprocessor


【解决方案1】:

.pch 中定义它。而且你永远不会忘记在你定义了USE_LOCALHOST的地方包含.h-file。

或者您可以在Preprocessor Macros 的构建设置中定义它。 例如仅用于调试。

【讨论】:

  • 谢谢,这似乎是在文件之间共享预处理器指令的好方法。
【解决方案2】:

#define 仅在定义它的文件中有效。但您可以在MyWebService.h 中使用#import "MyProgram.h" 并解决问题。每次需要访问USE_LOCALHOST,只需导入头文件即可。

【讨论】:

  • 我已经在 AppDelegate.m 中从头开始导入了“MyProgram.h”。
  • 不是AppDelegate.m,而是尝试在MyWebService.h中导入
  • 当然在这种情况下,它会起作用。但是,我不想那样做。每次,我都需要调用 MyProgram.h。这不是创建全局指令的目的。感谢您的回复。可能,我的方法是错误的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-17
  • 2012-06-08
  • 2022-07-12
  • 1970-01-01
  • 2020-01-22
  • 1970-01-01
  • 2013-08-02
相关资源
最近更新 更多