【发布时间】:2014-08-19 10:49:45
【问题描述】:
我希望在我的应用中简化“胶水”代码的编写。
我的目标是这样的:
MAKE_KEY(keyname)
展开为
#define keyname @"keyname"
不幸的是,我很确定我不能在#define 中使用#define。
所以,我的目标是扩展:
MAKE_KEY(keyname)
作为
keyname @"keyname"
这样我就可以写了:
#define MAKE_KEY(USER_ID)
得到
#define USER_ID @"USER_ID"
我该怎么做?
显示您希望如何使用扩展值来帮助解决您的问题
我想生成#define MY_CONST @"MY_CONST",而不需要输入两次 MY_CONST(因为我有很多要处理的...)
然后,我将在代码中任何需要的地方使用MY_CONST。
我这样做是因为我将拥有像 people 或 cities 或 plants 或 animals 等对象......它们不会有很多方法,而是有很多变量。这些对象需要可序列化。
有两种方法可以做到这一点:
每个变量都有一个属性,用coder方法写对应的encode(真的很痛苦)
将所有数据输入到字典中,然后在encodewithcoder中序列化字典。
我选择了解决方案 #2。但我仍然想拥有访问器。因此,我可以设计一个宏来为我编写访问器,方法是在字典中获取正确的值。
所有的共同点是访问器和字典的键都共享相同的名称。
【问题讨论】:
-
您仍在从
#define生成#define。展示您希望如何使用扩展值来帮助解决您的问题。 -
@trojanfoe 感谢您的回复。我已经相应地更新了我的问题。
标签: objective-c macros c-preprocessor