C语言封装带省略参数的函数,C与C++的函数声明中省略参数的不同意义
生活随笔
收集整理的這篇文章主要介紹了
C语言封装带省略参数的函数,C与C++的函数声明中省略参数的不同意义
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一直都以為C/C++中形如
int func();
這樣的函數聲明其意義就是一個參數 void(沒有參數)的函數。然而今天在看C++的時候突然看到這么一句:
對于帶空參數表的函數,C和C++有很大的不同。在C語言中,聲明
int func2();
表示“一個可帶任意參數(任意數目,任意類型)的函數”。這就妨礙了類型檢查。而在C++語言中它就意味著“不帶參數的函數”。
這一點老師并沒有講到,學校教科書里也沒有提到,帶著好奇心,我特意試了一下
test.c
#include
void fun();
int main()
{
fun(1, 1);
return 0;
}
void fun(int a, int b)
{
printf("%d\n", a+b);
}
編譯通過
$ gcc -Wall test.c -o test
$ ./test
2
$ mv test.c test.cpp
$ g++ -Wall test.cpp -o test
test.cpp: 在函數‘int main()’中:
test.cpp:6:10: 錯誤:too many arguments to function ‘void fun()’
fun(1, 1);
^
test.cpp:3:6: 附注:在此聲明
void fun();
^~~
這也解釋了為什么主函數要寫成這樣的原因
int main(void)
總結
以上是生活随笔為你收集整理的C语言封装带省略参数的函数,C与C++的函数声明中省略参数的不同意义的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: shell与其他语言不同点
- 下一篇: 手写springmvc