0
私はC++プログラムのいくつかのテストを実行し、実行するたびにマクロを再定義するシェルスクリプトを作成しようとしています。私は-D 名前プリプロセッサオプション(https://gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html参照)を使用しようとしていますが、マクロが再定義されているという警告が常に出てきて、プログラムを再定義せずに実行します。シェルスクリプトから-D nameコンパイルオプションを使用する
次のように私のスクリプトは次のとおりです。
、私は述べる++ファイル、project01.cpp私のCで#!/bin/bash
#NUMS is number of subdivisions:
for subdiv in 10 100 500 1000
do
echo NUMS = $subdiv
g++ -D NUMS=$subdiv project01.cpp -o project01 -lm -fopenmp
./project01 >> bezier_results.txt
done
:
#define NUMS 1
私が '1' を入れて試してみたが、それが生成しますエラーも同様です。スクリプトが実際にマクロを再定義していないことは明らかです。何かご意見は?ありがとう!
それはまさにその警告が言っていることです、あなたはそれを再定義しています。コマンドラインで一度定義し、ファイル内で再度定義しました。あなたの意図がコマンドラインから_override_するのであれば、ソースの定義を '#ifndef NUMS' /' #endif'のペアで囲みます。 _それは、スクリプトが実際にマクロを再定義していないことは明らかです_ - あなたは正しいです。再定義は '#define NUMS 1'ソースで行われました。コマンドラインが最初に見えました。 – mah