是否有宏可以在編譯時返回一個唯一字符串,以便它可以用作一個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 \
有一個宏觀__COUNTER__
在Visual Studio中預定義的,可以幫助
我以前iammilind建議
#define UNIQUE2(param) YourClassBaseNames##param
#define UNIQUE1(param) UNIQUE2(param)
#define UNIQUE UNIQUE1(__COUNTER__)
class UNIQUE
{
};
class UNIQUE
{
};
計數器 - 返回新的計ECH時間
參考: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班,不希望前方宣佈它:)]
如果宏產生了一個「神奇」的名字,你怎麼知道它產生了什麼,所以你可以在別處參考它?你定義的大多數東西都需要被引用才能被使用。 – unwind
解釋你實際*試圖達到的目標。 – Pubby
@unwind我不想引用它,我想要啓動Obj-C運行時所需的+ Initialize方法,以便在啓動時運行一次。從那裏初始化方法會做一些魔術。 –