2016-04-29 22 views
1

「構築設定」タブの下の部分、私はプリプロセッサマクロを定義した:へのアクセスのXcode LLVMのプロセッサマクロ「のApple LLVM 7.0前処理」で

私のコードで
HUBNAME=myhub 

、私がしようとしています

SBNotificationHub* hub = [[SBNotificationHub alloc] initWithConnectionString:HUBLISTENACCESS notificationHubPath:HUBNAME]; 

をしかし、Xcodeは「myhub」は私の変数の名前であると考えて:文字列としてHUBNAMEの値を参照することが宣言されていないのidentの

使用ifier 'myhub'

誰かが文字列として 'myhub'にアクセスする方法を理解できますか?

答えて

1

何かのようなものTO_STR(arg)=#arg HUBNAME=TO_STR("myhub")? (あるいは単にTO_STR(myhub)引用O/W。)

NSLog(@"%s", HUBNAME); // SO36947532[13085:4401425] myhub 

GNUから:

3.4 Stringification

時にはあなたは、文字列 定数にマクロ引数を変換することもできます。パラメータは文字列定数内では置き換えられませんが、 では#の前処理演算子を代わりに使用できます。 のマクロパラメータを先頭に#で使用すると、プリプロセッサはそれを実際の引数のリテラルテキスト に置き換え、文字列定数に変換します。 通常のパラメータ置換と異なり、引数は最初に マクロ展開されていません。これは、の文字列化と呼ばれます。

Xcode

+0

ありがとう!魅力のように働いた。私のコードからマクロにアクセスする際には、 "@HUBNAME"を使用していたことに注意してください。 – Vee

+0

関連する質問にお答えすることができます:http://stackoverflow.com/questions/36988067/stringify-endpoint-for-xcode-llvm-processor-macros – Vee

+0

私は現在、東京のどこかのコンピュータで数日間。来週誰もいなかったら私は見ていきます。 –

関連する問題