有没有一种可以在编译时返回唯一字符串的宏,以便将其用作Objective-C类的名称?
我想到了这样一个东西:
#define my_macro(params) \
@implementation my_macro_function_giving_unique_string_(MyTrickyRuntimeExtension) \
//Do stuff \
@end \
有没有一种可以在编译时返回唯一字符串的宏,以便将其用作Objective-C类的名称?
我想到了这样一个东西:
#define my_macro(params) \
@implementation my_macro_function_giving_unique_string_(MyTrickyRuntimeExtension) \
//Do stuff \
@end \
#define UNIQUE_NAME2(LINE) Class##LINE
#define UNIQUE_NAME1(LINE) UNIQUE_NAME2(LINE)
#define UNIQUE_NAME UNIQUE_NAME1(__LINE__)
只需将其用作:
class UNIQUE_NAME {};
__FILE__
宏来避免在不同文件中定义相同行数的类名相似的问题。 - borisbn在Visual Studio中预定义了一个宏__COUNTER__
,可以帮助解决这个问题。
我使用了iammilind的建议。
#define UNIQUE2(param) YourClassBaseNames##param
#define UNIQUE1(param) UNIQUE2(param)
#define UNIQUE UNIQUE1(__COUNTER__)
class UNIQUE
{
};
class UNIQUE
{
};
计数器 - 每次返回新的计数
参考:http://msdn.microsoft.com/en-us/library/b0084kay(v=vs.80).aspx
在GCC中也可用