如何在程序中对其他函数可见的函数?

时间:2017-04-22 08:19:24

标签: c

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

错误:&#39; max_min&#39;在这方面没有申明         c = max_min(a,b);

请帮帮我

6 个答案:

答案 0 :(得分:2)

main之前定义你的功能,或者给你的功能前向声明。像这样 -

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

}
// rest of code

您需要在使用函数之前定义或提供前向声明,否则编译器将抛出错误,因为它在此之前看不到函数定义或声明。

答案 1 :(得分: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 :(得分: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);
 }

答案 3 :(得分: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

BTW编译器应报告&#34;并非所有控制路径都返回值&#34;因为using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; (...) static class MainApp { static void Main() { // TODO : Load codes via Roslyn } static void DoSomething() { // Do something } } 时函数没有返回任何值。

答案 4 :(得分:1)

你真的需要花几天时间读一本关于C编程的书。

您还应该查看C reference等网站。

在C中,每个函数都应该在被使用之前被声明(可能在某个included标题中)。

请在<{1}} 之前移动max_min函数,或者声明它:

main

在申报时,您无需为正式命名,因此可以进行以下简短声明:

int max_min(int a,int b);

BTW,int max_min(int,int); 实际上是一个糟糕且令人困惑的名字(因为你不计算最小值,只计算最大值)。您的意思是max_min或者maxmy_max

不要忘记使用所有警告和调试信息进行编译(例如maximum如果使用GCC编译器)。然后使用调试器(例如GNU gdb)。也许聪明的编译器会注意到,当gcc -Wall -g等于a时,您不会覆盖这种情况。

您需要test your program获取多个输入(并且您也可以使用formal methods来证明其正确性w.r.t。specifications,例如在Frama-C的帮助下。您可以从传递给b的程序参数(使用atoi转换它们)中获取它们,而不是使用ab的各种值重新编译代码。

main

等...

然后,您可以使用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等于3,a等于4.实际上您将运行{{3} (例如b)。

顺便说一句,您还可以阅读(in the debuggergdb --args ./myprog 3 4a的值。

答案 5 :(得分: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);
}