C语言封装带省略参数的函数,C与C++的函数声明中省略参数的不同意义
一直都以為C/C++中形如
int func();
這樣的函數(shù)聲明其意義就是一個(gè)參數(shù) void(沒有參數(shù))的函數(shù)。然而今天在看C++的時(shí)候突然看到這么一句:
對(duì)于帶空參數(shù)表的函數(shù),C和C++有很大的不同。在C語言中,聲明
int func2();
表示“一個(gè)可帶任意參數(shù)(任意數(shù)目,任意類型)的函數(shù)”。這就妨礙了類型檢查。而在C++語言中它就意味著“不帶參數(shù)的函數(shù)”。
這一點(diǎn)老師并沒有講到,學(xué)校教科書里也沒有提到,帶著好奇心,我特意試了一下
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: 在函數(shù)‘int main()’中:
test.cpp:6:10: 錯(cuò)誤:too many arguments to function ‘void fun()’
fun(1, 1);
^
test.cpp:3:6: 附注:在此聲明
void fun();
^~~
這也解釋了為什么主函數(shù)要寫成這樣的原因
int main(void)
總結(jié)
以上是生活随笔為你收集整理的C语言封装带省略参数的函数,C与C++的函数声明中省略参数的不同意义的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: shell与其他语言不同点
- 下一篇: 安装SQL 2008的错误 等待数据库引