2017-04-22 10 views
-1
#include<stdio.h> 
int main(void) 
{ 
    int a=3,b=4; 
    int c; 
    c = max_min(a,b); 
    printf("the max no is %d\n",c); 
} 
int max_min(int a,int b) 
{ 
    if(a>b) 
    return a; 
    else if(b>a) 
    return b; 
} 

Error: 'max_min' was not declared in this scope c = max_min(a,b);どのように機能がプログラム内の他の機能に見えますか?

+1

mainメソッドの前に機能を指定しますエラーメッセージ。他の誰かの時間を無駄にすることなく、自分自身でもっと速く答えを得ることができました。 –

+4

[このスコープで宣言されていない関数](http://stackoverflow.com/questions/23327630/function-not-declared-in-this-scope)と何百もの可能な複製 –

+0

この中で宣言されていない関数の可能な複製範囲と他の何百もの – abhiarora

答えて

1

はそれを宣言私を助けてください。私。 mainの上にint max_min(int a,int b);を置きます。これは、関数

すなわち

#include<stdio.h> 

int max_min(int a,int b); 

int main(void) 
{ 
    int a=3,b=4; 
    int c; 
    c = max_min(a,b); 
    printf("the max no is %d\n",c); 
} 
int max_min(int a,int b) 
{ 
    if(a>b) 
    return a; 
    else if(b>a) 
    return b; 
} 
2

あなたがmain前に機能を定義したり、機能の前方宣言を与えるどちらかについて、コンパイラを教えてくれます。このように -

#include<stdio.h> 
int max_min(int a,int b);  // forward declaration 
int main(void){ 
// your code 

} 
// rest of code 

あなたは定義するか、それはその時点までの関数定義や宣言を見ていないとして、エラーがスローされます機能、他のコンパイラを使用する前に、前方宣言を提供する必要があります。

1

後でmin_max関数を定義したことをコンパイラに伝えるためにプロトタイプを追加します。コンパイラはmainから呼び出されているかを知っているので、

#include<stdio.h> 

int max_min(int a,int b); 

int main(void) 
{ 
int a=3,b=4; 
int c; 
c = max_min(a,b); 
printf("the max no is %d\n",c); 
} 
int max_min(int a,int b) 
{ 
if(a>b) 
return a; 
else if(b>a) 
return b; 
} 

または定義min_maxはメイン

#include<stdio.h> 

int max_min(int a,int b) 
{ 
if(a>b) 
return a; 
else if(b>a) 
return b; 
} 

int main(void) 
{ 
int a=3,b=4; 
int c; 
c = max_min(a,b); 
printf("the max no is %d\n",c); 
} 
1

前に、関数を宣言関数プロトタイプが必要です。

#include<stdio.h> 

int max_min(int a,int b);  // function protoype 

int main(void) 
{ 
    int a=3,b=4; 
    int c; 
    c = max_min(a,b); 
    printf("the max no is %d\n",c); 
} 

int max_min(int a,int b) 
{ 
    if(a>b) 
     return a; 
    else if(b>a) 
     return b; 
} 

ところでコンパイラは、関数a == bによって返された値がないため、「いないすべてのコントロールパスが値を返す」報告すべきです。

1

あなたは本当にあなたがまた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)を使用します。おそらく巧妙なコンパイラは、abに等しい場合にあなたがカバーしないことに気付くでしょう。

あなたは、いくつかの入力のためにtest your programする必要があります(そして、あなたはまた、例えばFrama-Cの助けを借りて、specifications w.r.t.その正しさを証明するためにformal methodsを使用することができます)。 abのさまざまな値を使用してコードを再コンパイルする代わりに、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)。

ところで、abという値を(scanfで)読むこともできます。

0

試してみてくださいどちらかそれの1

まずMainメソッド

#include<stdio.h> 
int max_min(int,int); 
int main(void) 
{ 
    int a=3,b=4; 
    int c; 
    c = max_min(a,b); 
    printf("the max no is %d\n",c); 
} 
int max_min(int a,int b) 
{ 
    if(a>b) 
    return a; 
    else if(b>a) 
    return b; 
} 

前にメソッドを宣言するか、これは非常に* Googleable *です

#include<stdio.h> 
int max_min(int a,int b) 
{ 
    if(a>b) 
    return a; 
    else if(b>a) 
    return b; 
} 
int main(void) 
{ 
    int a=3,b=4; 
    int c; 
    c = max_min(a,b); 
    printf("the max no is %d\n",c); 
} 
関連する問題