linux驱动中出错function declaration isn't a prototype

本文探讨了在编程中因函数未正确声明而产生的警告问题,并通过两个示例解释了解决方案:一是确保函数调用前已明确声明;二是对于内核模块编程,函数参数类型声明的重要性。

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

 

出现此警告原因:

1: 函数没有声明。在你调用的这个函数前面加上该函数的定义即可。

main()
{
test();
}

test (int a)
{
printf("test: %d/n", a);
}

这个代码中如果在main函数前面加上“test (int a);”就可以正确运行了

2:

#include <linux/config.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>

static int hello_init_module(void)
{
    printk("Hello, world - this is the kernel speaking/n");
    return 0;
}

/* Cleanup - undid whatever init_module did */
static void hello_cleanup_module(void)
{
    printk("Short is the life of a kernel module/n");
}
module_init(hello_init_module);
module_exit(hello_cleanup_module);

上面代码是内核中的一个模块, 如果 static int hello_init_module(void)  括号里面没有加void就会出现此警告。

加上void  就能够编译通过了~~·

这是为什么呢????

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值