"warning: type defaults to ‘int’" 实际上 return 的功能是什么?
what does a "warning: type defaults to ‘int’" function actually return?
foo.c:3:8: warning: type defaults to ‘int’ in declaration of ‘bar’ [-Wimplicit-int]
我在尝试编译这两个文件时遇到警告,我知道这是因为我一开始没有指定bar函数的类型。但是我想弄清楚默认的 int return 类型 returned 的值实际上代表了什么。我试着改变bar函数的内容,包括参数个数和函数体(比如加一些短语句),但是没找到return值的规律。
foo.c
#include<stdio.h>
extern bar();
int main()
{
int a = 4;
int ret = bar(a);
printf("ret = %d\n",ret);
return 0;
}
bar.c
#include<stdio.h>
void bar(int a)
{
printf("a = %d\n",a);
}
已编译 gcc -o fb foo.c bar.c
结果
a = 4
ret = 6
函数 return 的类型和函数 return 的值是不同的。
在 extern bar();
中,您尚未将函数声明为 return void
,这意味着没有任何 returned。这意味着它 return 是某种东西,并且由于 C 语言的历史,它 return 的类型默认为 int
.
有了这样的声明,函数 应该 return 一个 int
值,如果它的 return 值被使用。
在此代码中:
void bar(int a)
{
printf("a = %d\n",a);
}
你没有return一个值。没有 return
声明。但是 return 值用于您的 main
例程。 C 标准未定义由此产生的行为。 C 标准中没有规定会发生什么。
foo.c:3:8: warning: type defaults to ‘int’ in declaration of ‘bar’ [-Wimplicit-int]
我在尝试编译这两个文件时遇到警告,我知道这是因为我一开始没有指定bar函数的类型。但是我想弄清楚默认的 int return 类型 returned 的值实际上代表了什么。我试着改变bar函数的内容,包括参数个数和函数体(比如加一些短语句),但是没找到return值的规律。
foo.c
#include<stdio.h>
extern bar();
int main()
{
int a = 4;
int ret = bar(a);
printf("ret = %d\n",ret);
return 0;
}
bar.c
#include<stdio.h>
void bar(int a)
{
printf("a = %d\n",a);
}
已编译 gcc -o fb foo.c bar.c
结果
a = 4
ret = 6
函数 return 的类型和函数 return 的值是不同的。
在 extern bar();
中,您尚未将函数声明为 return void
,这意味着没有任何 returned。这意味着它 return 是某种东西,并且由于 C 语言的历史,它 return 的类型默认为 int
.
有了这样的声明,函数 应该 return 一个 int
值,如果它的 return 值被使用。
在此代码中:
void bar(int a)
{
printf("a = %d\n",a);
}
你没有return一个值。没有 return
声明。但是 return 值用于您的 main
例程。 C 标准未定义由此产生的行为。 C 标准中没有规定会发生什么。