私は難しい問題に直面しています。私はコンパイラのコマンドラインに従ってソースファイルの内容を鍛造したいと思います。たとえば、(使用してVC):私は、コマンドラインを使用している場合cmdの行から-Dの値を文字列にする方法は?
cl -c -E -Dfoo=rice test.c
は、私が(前処理後)実際Cコンテンツを取得したい:
char *s = "rice";
私はコマンドを使用している場合ライン
cl -c -E -Dfoo=ball test.c
FIRST TRY ...
char *s = "ball";
今すぐ解決策を見つける: - いいえ、運
// test.c
#define STRNAME(n) #n
char *s = STRNAME(foo);
私は実際Cソースファイルの内容を取得したいです。どんなにfooはコマンドラインになるように定義されたものを、私はいつもSECOND TRY(私ができる最も近い画像が、それでも冗長)
char *s = "foo"; // Oh no!
を得る:
// test.c
#define STRNAME(n) #n
char *s = foo;
この時に、私は私を変更する必要はありません冗長にコマンドライン:
cl -c -E -Dfoo=STRNAME(rice) test.c
今、私は
char *s = "rice";
を取得
この冗長さから私を助ける方法はありますか?
ところで、私は実際にはコマンド引数に引用符を入れたくないです(Windows CMDやLinuxのBash-Iでこのようなコマンドラインを確実かつ移植可能に書くことができないため、それらをargv[x]
の一部にしています。考える
可能重複(http://stackoverflow.com/questions/195975/how -a-char-string-from-ac-macros-value) –
ああ、そうですね。 –