3

object-c クラスの名前として使用できるように、コンパイル時に一意の文字列を返すことができるマクロはありますか?

私は次のようなことを考えています:

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

2 に答える 2

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 つのクラスを宣言し、前方宣言をどこにも期待しないでください :)]

于 2013-01-18T11:31:56.540 に答える
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でも利用できます

于 2013-01-18T11:34:48.100 に答える