Макрос для возврата уникальной строки во время компиляции

Существует ли макрос, который может возвращать уникальную строку во время компиляции, чтобы ее можно было использовать в качестве имени классаjective-c?

Я думаю о чем-то вроде:

#define my_macro(params) \
@implementation my_macro_function_giving_unique_string_(MyTrickyRuntimeExtension) \
//Do stuff \
@end \

3

Решение

есть макрос __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

1

Другие решения

В C ++ это может быть:

#define UNIQUE_NAME2(LINE) Class##LINE
#define UNIQUE_NAME1(LINE) UNIQUE_NAME2(LINE)
#define UNIQUE_NAME UNIQUE_NAME1(__LINE__)

И просто используйте его как:

class UNIQUE_NAME {};
[Примечание: объявляйте 1 класс на строку и не надейтесь, что его объявят вперёд :))

1

По вопросам рекламы [email protected]