私は、コマンドラインに値I入力に次の値を変更しますbashスクリプトを作成しようとしています:定義済みの値をどのように再定義しますか?
#ifndef SIZE
#define SIZE 10
#endif
は、私がSIZEの値を変更することができる方法はありますか?
私は、コマンドラインに値I入力に次の値を変更しますbashスクリプトを作成しようとしています:定義済みの値をどのように再定義しますか?
#ifndef SIZE
#define SIZE 10
#endif
は、私がSIZEの値を変更することができる方法はありますか?
プログラムをコンパイルするときに-DSIZE=30
をGCCに渡すと、SIZE
は最初から30
と定義されます。次に、質問に表示されているコードが既に定義されているかどうかをチェックするので、10
と定義されません。
あなたは 'sed'を使ってソースコードを変更したいですか?それはCと全く関係がありますか?コンパイルスイッチを使って '-DSIZE = 30'を変更したいのですか? –
私はそれを理解しているので、実行時に 'SIZE'の値を10から20に変更したいのですか?もしそうなら、答えはノーです。プリプロセッサのコマンド(そのうちの '#define'は1)は、コンパイルプロセスの早い段階で処理されます。 '#define'で何が起こるかは、コードが解析される前でも、文字列' SIZE'のすべての出現が10で置き換えられることです。あなたができることは、デフォルトで10に初期化された変数(例えば 'size')を持ってから、コマンドライン引数を処理し、必要に応じて変数を変更することです。 – thurizas
これを行う最善の方法は、そのようなすべての定数を別々のヘッダーに入れ、必要に応じてそれらのヘッダーを編集/生成することです。 GCCの機能を使用してプリプロセッサの定数を生成するのは悪い考えです。移植性と標準Cのために努力してください。 – Lundin