object-c クラスの名前として使用できるように、コンパイル時に一意の文字列を返すことができるマクロはありますか?
私は次のようなことを考えています:
#define my_macro(params) \
@implementation my_macro_function_giving_unique_string_(MyTrickyRuntimeExtension) \
//Do stuff \
@end \
object-c クラスの名前として使用できるように、コンパイル時に一意の文字列を返すことができるマクロはありますか?
私は次のようなことを考えています:
#define my_macro(params) \
@implementation my_macro_function_giving_unique_string_(MyTrickyRuntimeExtension) \
//Do stuff \
@end \
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 つのクラスを宣言し、前方宣言をどこにも期待しないでください :)]
__COUNTER__
役立つ可能性がある Visual Studio で定義済みのマクロがあります。
私はiammilndの提案を使用しました
#define UNIQUE2(param) YourClassBaseNames##param
#define UNIQUE1(param) UNIQUE2(param)
#define UNIQUE UNIQUE1(__COUNTER__)
class UNIQUE
{
};
class UNIQUE
{
};
counter - 新しいカウント ech 時間を返します
参照: http://msdn.microsoft.com/en-us/library/b0084kay(v=vs.80).aspx
GCCでも利用できます