詳談C與C++的函數(shù)聲明中省略參數(shù)的不同意義
一直都以為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 <stdio.h>
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)
以上這篇詳談C與C++的函數(shù)聲明中省略參數(shù)的不同意義就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
C++基于reactor的服務(wù)器百萬并發(fā)實(shí)現(xiàn)與講解
這篇文章主要介紹了C++基于reactor的服務(wù)器百萬并發(fā)實(shí)現(xiàn)與講解,本文通過實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07
C語言實(shí)現(xiàn)將字符和數(shù)字串到一起
今天小編就為大家分享一篇C語言實(shí)現(xiàn)將字符和數(shù)字串到一起,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-12-12
C語言中volatile關(guān)鍵字的作用與使用案例教程
這篇文章主要介紹了C語言中volatile關(guān)鍵字的作用與使用案例教程,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是本文的詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07
C++中volatile關(guān)鍵字的使用詳解以及常見的誤解
volatile 關(guān)鍵字是一種類型修飾符,用它聲明的類型變量表示可以被某些編譯器未知的因素更改,比如:操作系統(tǒng),硬件或者其他線程等2020-01-01
數(shù)據(jù)結(jié)構(gòu) 雙機(jī)調(diào)度問題的實(shí)例詳解
這篇文章主要介紹了數(shù)據(jù)結(jié)構(gòu) 雙機(jī)調(diào)度問題的實(shí)例詳解的相關(guān)資料,雙機(jī)調(diào)度問題,又稱獨(dú)立任務(wù)最優(yōu)調(diào)度:用兩臺(tái)處理機(jī)A和B處理n個(gè)作業(yè)的實(shí)例,需要的朋友可以參考下2017-08-08

