あなたは本当にあなたがまたC referenceようなウェブサイトになるはずC.
でのプログラミングの本を読んで数日を過ごす必要があります。
Cでは、使用する前にすべての関数を(おそらく一部のincludedヘッダーに)宣言しておく必要があります。
だからあなたmax_min
機能は前にmain
を移動したり、それを宣言します、あなたはホルマールに名前を付ける必要はありませんので、以下の短い宣言が可能です
int max_min(int a,int b);
宣言時:
int max_min(int,int);
BTW、max_min
は実際には貧弱で紛らわしい名前です(最小値を計算しないため最大値のみです)。 max
またはおそらくmy_max
またはmaximum
を意味します。
すべての警告とデバッグ情報(例えば、GCCコンパイラを使用している場合はgcc -Wall -g
)でコンパイルするのを忘れないでください。次にデバッガ(例:GNU gdb
)を使用します。おそらく巧妙なコンパイラは、a
がb
に等しい場合にあなたがカバーしないことに気付くでしょう。
あなたは、いくつかの入力のためにtest your programする必要があります(そして、あなたはまた、例えばFrama-Cの助けを借りて、specifications w.r.t.その正しさを証明するためにformal methodsを使用することができます)。 a
とb
のさまざまな値を使用してコードを再コンパイルする代わりに、main
に渡されたプログラム引数(atoiで変換)からそれらを得ることができます。
int main(int argc, char**argv) {
int a= 10;
int b= 5;
if (argc>1)
a = atoi(argv[1]);
if (argc>2)
b = atoi(argv[2]);
printf("a=%d b=%d\n", a, b);
など....
次に、あなたが実際にあなたがそのin the debuggerを(実行されます3に等しいa
と4に等しいb
をテストするために./myprog 3 4
と(一部の端末では)あなたのプログラムを実行することができ例えばgdb --args ./myprog 3 4
)。
ところで、a
とb
という値を(scanfで)読むこともできます。
mainメソッドの前に機能を指定しますエラーメッセージ。他の誰かの時間を無駄にすることなく、自分自身でもっと速く答えを得ることができました。 –
[このスコープで宣言されていない関数](http://stackoverflow.com/questions/23327630/function-not-declared-in-this-scope)と何百もの可能な複製 –
この中で宣言されていない関数の可能な複製範囲と他の何百もの – abhiarora