当前位置: 技术问答>linux和unix
函数传入参数个数错误,C语言警告都不报一个?
来源: 互联网 发布时间:2016-10-13
本文导语: int foo(); int bar(); int main(void) { return foo(2, 3, 4); //3个参数 return 0; } int foo(int a, int b) { return bar(a); //1个参数 } int bar(int c, int d) //2个参数 { int e = c + d; return e; } 如上程序,编译的时候不报任何警告...
int foo();
int bar();
int main(void)
{
return foo(2, 3, 4); //3个参数
return 0;
}
int foo(int a, int b)
{
return bar(a); //1个参数
}
int bar(int c, int d) //2个参数
{
int e = c + d;
return e;
}
如上程序,编译的时候不报任何警告,执行结果还是对的,无语啊无语。 难怪用C
的都是超高手,我用了5年java,在来学C非常地痛苦。。。。
aray@aray:~/C$ gcc -g -Wall test.c
aray@aray:~/C$ ./a.out
aray@aray:~/C$ echo $?
5
PS: 我想学Linux下的C编程,在本论坛提出问题好呢? 还是把问题贴到“开发语言 ==> C/C++ ==> C语言”好?
int bar();
int main(void)
{
return foo(2, 3, 4); //3个参数
return 0;
}
int foo(int a, int b)
{
return bar(a); //1个参数
}
int bar(int c, int d) //2个参数
{
int e = c + d;
return e;
}
如上程序,编译的时候不报任何警告,执行结果还是对的,无语啊无语。 难怪用C
的都是超高手,我用了5年java,在来学C非常地痛苦。。。。
aray@aray:~/C$ gcc -g -Wall test.c
aray@aray:~/C$ ./a.out
aray@aray:~/C$ echo $?
5
PS: 我想学Linux下的C编程,在本论坛提出问题好呢? 还是把问题贴到“开发语言 ==> C/C++ ==> C语言”好?
|
那是你函数原型声明不完备,把前两行改为下面的样子,你再看
int foo(int a, int b);
int bar(int c, int d);
int foo(int a, int b);
int bar(int c, int d);
|
或者你用g++来编译
g++ test.c
它的类型检查会严格的多..
g++ test.c
它的类型检查会严格的多..
|
声明不对
结果也不对 echo的结果是5啊
结果也不对 echo的结果是5啊
|
而且你哪个结果哪儿对的呀?
|
楼上都说了....