Существует ли макрос, который может возвращать уникальную строку во время компиляции, чтобы ее можно было использовать в качестве имени классаjective-c?
Я думаю о чем-то вроде:
#define my_macro(params) \
@implementation my_macro_function_giving_unique_string_(MyTrickyRuntimeExtension) \
//Do stuff \
@end \
есть макрос __COUNTER__
предопределенный в Visual Studio, который может помочь
я использовал iammilind предложения
#define UNIQUE2(param) YourClassBaseNames##param
#define UNIQUE1(param) UNIQUE2(param)
#define UNIQUE UNIQUE1(__COUNTER__)
class UNIQUE
{
};
class UNIQUE
{
};
counter — возвращает новое время отсчета
ссылка: http://msdn.microsoft.com/en-us/library/b0084kay(v=vs.80).aspx
это также доступно в GCC
В C ++ это может быть:
#define UNIQUE_NAME2(LINE) Class##LINE
#define UNIQUE_NAME1(LINE) UNIQUE_NAME2(LINE)
#define UNIQUE_NAME UNIQUE_NAME1(__LINE__)
И просто используйте его как:
class UNIQUE_NAME {};
[Примечание: объявляйте 1 класс на строку и не надейтесь, что его объявят вперёд :))