ループでsedを使用して変数値を入力するには?

ループでsedを使用して変数値を入力するには?

したがって、理解を助けるために練習用にこれを実行しようとしています。しかし、test.cppにコードスニペットがあり、プログラムで「CONST N = 10」のように1行を変更したい場合は変更されます。 N値他の値に対してbashスクリプトのループを介してどのように値を取得しますか?私の初期の推測は次のとおりです。

for x in 10 20
 do 
    sed -i -e 's/const int N = 10;/const int N = '$x';/g' test.cpp
    g++ test.cpp -o test.o
    ./test.o
    sed -i -e 's/const int N = '$x';/const int N = 10;/g' test.cpp
 done

ここで x は 10 と 20 を実行し、その値をプログラムの変数値に入力します。どんな助けでも大変感謝します。

ベストアンサー1

より良いアプローチは、コンパイルラインで定義するプリプロセッサマクロを使用することです。したがって、コードを次のように変更します。

#ifndef N_MAC
#define N_MAC 10
#endif
const int N = N_MAC;

次に、次のようにコンパイルします。

g++ test.cpp -DN_MAC=$x -o test.o

$ifndefこのブロックは、オーバーライドしないときの-DN_MACデフォルト値を提供します。

おすすめ記事