C编程小问题 —— “missing function-prototype“

在C编程中,'missing function-prototype'错误通常由未声明的函数引起。常见原因包括头文件卫士宏定义错误、多个头文件包含顺序不当等。正确使用头文件和注意宏定义的插入顺序对于避免这类错误至关重要。

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

    这个问题是根本原因是编译的代码中存在未声明函数,即“缺少函数原型”错误。多文件编程中比较多,导致的原因也很多,下面总结几个用于大家排查自己报错代码。

    1、“头文件卫士”宏定义的失误。

    有时候为了方便,一个功能函数文件*.c、*.h直接复制几份加以修改,然而这样稍不留神就会导致头文件里的“#ifndef XXXX”忘记修改,导致两份头文件的选择编译宏相同,原本用来防止重复编译的头文件卫士现在直接导致第二份代码的头文件无法被正常预处理插入代码中。

    宏名较长时由于看起来比较相似,检查代码很难被发现,或者当代码较长时,由于头文件卫士在代码的最开始,也很容易被忽视。

    像下面这样的代码,文件b.h宏内的代码内容将被在编译器预处理时直接忽略。

文件a.h

#ifndef __ABCDEFG_H
#define __ABCDEFG_H
...
void func_a(void);
...
#enddif // __ABCDEFG_H

文件b.h

#ifndef __ABCDEFG_H
#define __ABCDEFG_H
...
void func_b(void);
...
#enddif // __ABCDEFG_H

    2、多个头文件包含引起的失误。

    (很抱歉这个报错原因理解不对,因为头文件在包含时是在调用程序的开头地方,所以无论各个头文件调用顺序如何都会被提前声明,所以不是下面介绍的原因。那我遇到的那个错误原因还不是这个,当时没仔细查找

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值