C语言学习笔记——调用函数时提示警告

本文介绍了在C语言编程中遇到的编译警告问题,即在函数定义之前调用了该函数导致的`implicit-function-declaration`警告。分析了错误原因,包括函数未提前声明,编译器默认函数返回类型为int。提出了两种解决方案:一是遵循“定义在前,调用在后”的原则,二是提前在main()函数前声明函数原型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【代码】
int main()
{
abc();
abc3();
return 0;

}

void abc()
{
int a=65135;
double i=8256.67;
a=(int)i+a;
printf("\n%d,%f\n",a,i);

}

【问题】 
编译时报如下错误:
||=== Build: Debug in c_20170822 (compiler: GNU GCC Compiler) ===|
C:\新建文件夹\c_20170822\main.c||In function 'main':|
C:\新建文件夹\c_20170822\main.c|25|warning: implicit declaration of function 'abc' [-Wimplicit-function-declaration]|
C:\新建文件夹\c_20170822\main.c|29|warning: conflicting types for 'abc'|
C:\新建文件夹\c_20170822\main.c|25|note: previous implicit declaration of 'abc' was here|
||=== Build finished: 0 error(s), 2 warning(s) (0 minute(s), 0 second(s)) ===|

【原因】
1、错误为在一个函数定义之前就去引用它了,这在C语言里是不允许的,尽管void 类型的可以,但是还会提示警告。
2、函数在后面定义先要在前面声明,否则编译器GCC默认abc()返回值类型为int了。所以之后运行到void abc()时,出现|warning: conflicting types for 'abc'|,因为与前面发生冲突。

【解决】
1、把函数放在main()前面书写,即“定义在前,调用在后”。
2、或者可以将其函数名统一写在main() 前边进行函数原型声明。如把void abc()加到main()前边。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值