【发布时间】:2017-04-19 19:31:59
【问题描述】:
我有一个项目,其中包含一些使用 Objective-C 语句定义的宏,如下所示:
#define TEST [someObject someNumber] == 500
我需要根据这个结果定义另一个值,像这样:
#if TEST
#define THING = 1
#else
#define THING = 2
#endif
但是,这不起作用。而且我不能使用#ifdef TEST,因为值总是被定义的。即使是false,它仍然是定义的。
TEST 基于 ObjC 语句,似乎预处理器无法评估它。那么,有没有办法对此进行测试?
【问题讨论】:
-
预处理器在运行时能知道
[someObject someNumber]的值吗? -
预处理器能否在构建时知道 [someObject someNumber] 的值?
-
也许吧。运行时启动后,它应该知道该值。如果是这样,我怎么知道?我将如何使用它?
-
越想越觉得这是个愚蠢的问题。由于 TEST 必须在运行时进行评估,因此无法在构建时知道它的值。因为预处理器无法知道该值,所以无法对其进行测试。这是正确的吗?
标签: objective-c xcode macros boolean c-preprocessor