質問

gcc_preprocessor_definitions(またはxcode "を使用している場合はプリプロセッサマクロ)の下にマクロ" foo= bar "を追加する場合、" foo "の値にアクセスするための最良の方法は何でしょうか?

現在、私は不器用を使います:

    #define MACRO_NAME(f) #f
    #define MACRO_VALUE(f)  MACRO_NAME(f)

    #ifdef FOO
        NSLog(@"%s", MACRO_VALUE(FOO));
    #else
        NSLog(@"undefined");
    #endif
.

「バー」

を出力します

確実に、より良い/クリーナーな方法があるはずですか?

役に立ちましたか?

解決

あなたがしているのは to stringize (または stringify )マクロ値です。間接は避けられない。

これは、GCCプリプロセッサマニュアルセクション(アーカイブリンク)

 #define xstr(s) str(s)
 #define str(s) #s
 #define foo 4
 str (foo)
      ==> "foo"
 xstr (foo)
      ==> xstr (4)
      ==> str (4)
      ==> "4
.

他のヒント

NSLog(@"%s", #FOO);
.

文字列化。それはあなたがすでに使用しているテクニックです。何が悪かったのですか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top