ios - #define 改变多参数方法名

标签 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 重命名多参数 objective-c 方法?

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

#define hello hello_obf
#define world world_obf

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

最佳答案

简短回答:否。

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

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

关于ios - #define 改变多参数方法名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57099018/

相关文章:

C语言 : how to interpret this #define?

iphone - 在ios中绘制数学图表的最佳方法是什么?

ios - swift3 中带有自定义标题的自定义导航后退按钮

objective-c - UIImage 调整大小并裁剪以适合框架

ios: 如何在 ios 中运行 html 数据?

objective-c - Objective-C "#if"语法

ios - 使用 UIScrollView 进行缩放

ios - IOS中的Unity3d游戏切换到第二个场景后崩溃?

objective-c - 在没有 initWithCString 的情况下将 char* 转换为 NSString 的正确方法?

有条件地定义 C 函数宏