2017-04-22 59 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

这是一个*非常* Googleable之前指定功能错误信息。你本可以更快地得到自己的答案,而不会浪费别人的时间。 –

+4

的[在此范围内没有声明功能]可能的复制(http://stackoverflow.com/questions/23327630/function-not-declared-in-this-scope)和数百人的 –

+0

功能的可能的复制不在​​此声明范围和其他数百人 – abhiarora

回答

1

声明。即把int max_min(int a,int b);放在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; 
} 
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编译器。

#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

你需要一个函数原型声明函数,所以编译器知道什么是被从main调用。

#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; 
} 

BTW编译器应报告“不是所有的控制路径返回一个值”,因为没有函数返回时a == b值。

1

你真的需要花费数天C.

读一本书上编程你也应该看看网站如C reference

在C语言中,每一个功能应该已经在使用前宣布(也许在某些included头)。

之前你main所以将你的max_min功能,或声明它:

int max_min(int a,int b); 

在声明时,你并不需要命名甲醛,所以下面较短的声明是可能的:

int max_min(int,int); 

BTW,max_min确实是一个贫穷和混乱的名称(因为你不计算最小,只有最大)。你的意思是max或者my_maxmaximum

不要忘了编译所有警告和调试信息(例如,如果使用GCC编译器,则为gcc -Wall -g)。然后使用调试器(例如GNU gdb)。也许聪明的编译器会注意到你没有覆盖的情况下,当a等于b

你需要test your program几个输入(你也可以使用formal methods来证明它的正确性w.r.t. specifications,例如,具有Frama-C的帮助)。相反,重新编译以各种各样的价值你的代码为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); 

等....

然后,你可以用./myprog 3 4运行程序(在某些终端)与a等于3 b等于4.测试实际上你会运行in the debugger(例如gdb --args ./myprog 3 4)。

顺便说一句,你也可以阅读(与scanf)的值ab

0

尝试要么它的一个

首先之前主要方法

#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; 
} 

声明的方法或主要方法

#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); 
} 
相关问题