有什么方法可以用预处理器替换部分字吗?
我的Objective-C类中有类似的东西
@interface PREFIX_MyClass { ... @end
我想使用预处理器将其转换为:
@interface AwesomeMyClass { ... @end
所以像
#define PREFIX_ Awesome
不起作用,因为它是一个单词的一部分。 还有别的办法吗? 我知道我可以使用这样的东西:
#define PrefixClass(NAME) Awesome##NAME @interface PrefixClass(MyClass)
但我不喜欢这样,因为它打破了代码完成并在开发工具中引用了以下内容(即:在这种情况下为Xcode)
这不是很优雅,但您可以使用预处理器来替换整个类名而不仅仅是part。
#define PREFIX_MyClass AwesomeMyClass @interface PREFIX_MyClass
当然,如果您多次使用前缀并且它发生变化,这就成了一个问题。 你可以通过使用另一个调用另一个宏来添加前缀来解决这个问题,这样只有一个宏包含实际的前缀。
#define ADD_PREFIX(name) Awesome##name #define PREFIX_MyClass ADD_PREFIX(MyClass) @interface PREFIX_MyClass
对于您想要添加前缀的所有内容,仍然需要一个宏,但代码完成将识别PREFIX_MyClass
名称。
这并不是您要求的,但它可能是实现目标的另一条途径。 Xcode允许您为项目定义类前缀。 在文件导航器中选择项目,然后在文件检查器(右侧边栏的第一个“选项卡”)中,您将拥有以下内容:
无论您在“类前缀”字段中输入的是什么文本,都会在您在该项目中创建的任何类的名称前加上。