【发布时间】:2016-03-30 18:41:51
【问题描述】:
我正在尝试定义这样的宏:
#define SOME_DEF [[TTys getString] isEqualToString:ANOTHER_STRING]
然后执行以下操作:
#if SOME_DEF
...
#endif
-
[TTys getString]返回一个 NSString -
ANOTHER_STRING之前定义为#define ANOTHER_STRING "hello"
我在#if SOME_DEF 行收到以下错误:
预处理器表达式开头的标记无效
基于这个SO question,这可能是由在编译时无法解决的问题引起的,但我已经定义了所有内容。我的嫌疑人是
isEqualToString 方法,但我不知道另一种方法。
【问题讨论】:
-
您将其作为一个宏而不只是一个函数来做这件事有什么原因吗?我可以根据经验告诉你,最好尽可能避免使用宏。
-
您是否希望在预处理阶段评估
isEqualToString:调用?
标签: ios objective-c macros