Linux 内核模块编译消灭告警
ISO C90 forbids mixed declarations and code
因为 变量定义之前任何一条非变量定义的语句(注意:语句是会带分号的)都会引起这个警告!将非变量的定义移到变量定义之后 即可。
比如:
int a;
a=a+1;
int b;
改为:
int a;
int b;
a=a+1;
即可。
-------------------------------------------------------------
function declaration isn’t a prototype
#include
#include
#include
#include
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就会出现此警告。
-------------------------------------------------------------
backslash and newline separated by space
backslash and newline separated by space”
反斜杠和换行为空格所分隔”#define NIPQUAD(addr)\
((unsigned char *)&addr)[0],\
((unsigned char *)&addr)[1],\
((unsigned char *)&addr)[2],\
((unsigned char *)&addr)[3]类似这个,反斜杠后面不能有空格
-------------------------------------------------------------
statement with no effect
int i=0;
*n1=0;
*n2=0;
for(i;i<strlen(cmds);++i)
{
if(*(cmds+i) ==‘ ‘)
{
*n1=++i;
break;
}
}开头定义了变量,在循环内部就不需要在定义了
未完待续....
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。