#定义更改多参数方法名称

时间:2019-07-18 16:27:43

标签: ios objective-c c-preprocessor preprocessor

我有方法

- (void)hello:(NSString *)a world:(NSString *)b

我想重命名(使用预处理器宏)

- (void)hello_obf:(NSString *)a world_obf:(NSString *)b

所以我尝试过

#define hello:world hello_obf:world_obf

这实际上不起作用,是否有任何解决方法可以使用 #define 重命名多参数目标c方法?

我发现的唯一解决方案是单独定义方法名称,例如。

#define hello hello_obf
#define world world_obf

这对我不起作用,因为它会弄乱我的其他代码。

1 个答案:

答案 0 :(得分:1)

简短答案:否

预处理发生在任何类型的语义甚至语法分析之前。预处理器对正在处理的程序的结构一无所知,因为尚未定义结构。因此,它对Objective-C方法一无所知。

基本上,预处理器将令牌流作为输入,并生成令牌流作为输出。由于它不解析令牌流,因此它没有Objective-C方法或C ++模板的概念,也没有涉及标识符语义的其他任何概念。