我的Objective-C类中有类似的东西
@interface PREFIX_MyClass {
...
@end
Run Code Online (Sandbox Code Playgroud)
我想使用预处理器将其转换为:
@interface AwesomeMyClass {
...
@end
Run Code Online (Sandbox Code Playgroud)
所以像
#define PREFIX_ Awesome
Run Code Online (Sandbox Code Playgroud)
不起作用,因为它是一个单词的一部分.还有其他方法吗?我知道我可以使用这样的东西:
#define PrefixClass(NAME) Awesome##NAME
@interface PrefixClass(MyClass)
Run Code Online (Sandbox Code Playgroud)
但我不喜欢这个,因为它打破了代码完成并在开发工具中引用了以下内容(即:在这种情况下为Xcode)
这不是很优雅,但您可以使用预处理器来替换整个类名而不是部分类名。
#define PREFIX_MyClass AwesomeMyClass
@interface PREFIX_MyClass
Run Code Online (Sandbox Code Playgroud)
当然,如果您多次使用前缀并且它发生变化,这就会成为一个问题。您可以通过使用另一个宏调用另一个宏来添加前缀来解决此问题,以便只有一个宏包含实际的前缀。
#define ADD_PREFIX(name) Awesome##name
#define PREFIX_MyClass ADD_PREFIX(MyClass)
@interface PREFIX_MyClass
Run Code Online (Sandbox Code Playgroud)
这仍然需要一个宏来表示您想要添加前缀的所有内容,但代码完成将识别该PREFIX_MyClass名称。
| 归档时间: |
|
| 查看次数: |
594 次 |
| 最近记录: |