プリプロセッサマクロ定義の値にアクセスする
-
16-09-2020 - |
質問
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);
.
文字列化。それはあなたがすでに使用しているテクニックです。何が悪かったのですか?
所属していません StackOverflow