1

NSString2つの文字列を連結して(@ "...")値を「返す」プリプロセッサマクロ関数を作成するのに問題があります。

これが私が試したことです:

#define ObjectKeyMake(NAME) @"com.test.##NAME"

呼び出しの結果を印刷すると、次のようになります。

NSLog(@"%@", ObjectKeyMake(foo)); // com.test.##NAME

だから私の質問は:プリプロセッサマクロで2つの文字列を連結してNSString(@ "..")を「返す」にはどうすればよいですか?

#define ObjectKeyMake(NAME) [@"com.test." stringByAppendingString: NAME]コンパイル時定数が必要なため、使用できません。

4

2 に答える 2

14

次のように、コンパイラが互いに隣接する文字列リテラルを組み合わせるという事実を利用できます。

NSString* greeting = @"Hello, " "world";

マクロの実装は次のようになります。

#define ObjectKeyMake(NAME) (@"com.test." #NAME)
于 2012-06-18T08:31:18.997 に答える
-1
#define ObjectKeyMake(NAME) @"com.test."#NAME
于 2012-06-18T08:32:40.517 に答える