什么是“警告:类型默认为'int'”函数实际返回?

问题描述 投票:-1回答:1

foo.c:3:8: warning: type defaults to ‘int’ in declaration of ‘bar’ [-Wimplicit-int]

我在尝试编译这两个文件时遇到了警告,我知道这是因为我没有在开头指定bar函数的类型。但我想弄清楚默认的int返回类型返回的值实际表示的是什么。我试图改变bar函数的内容,包括参数和函数体的数量(比如添加一些简短的语句),但是我没有找到任何返回值的规则。

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
c function types return warnings
1个回答
0
投票

函数返回的类型和函数返回的值是不同的东西。

extern bar();中,您尚未声明函数返回void,这意味着不会返回任何内容。这意味着它返回一些内容,并且由于C语言的历史,它返回的类型默认为int

如果使用这样的声明,函数应该返回int值,如果使用它的返回值。

在这段代码中:

void bar(int a)
{
        printf("a = %d\n",a);
}

你没有返回一个值。没有return声明。但是返回值用于你的main例程。产生的行为不是由C标准定义的。对于将会发生什么,C标准中没有规则。

© www.soinside.com 2019 - 2024. All rights reserved.