C/C++編程筆記:編寫(xiě)不會(huì)在C ++中編譯的C程序,我教你呀!

盡管C ++被設(shè)計(jì)為與C具有向后兼容性,但是當(dāng)使用C ++編譯器進(jìn)行編譯時(shí),可能會(huì)有許多C程序會(huì)產(chǎn)生編譯器錯(cuò)誤。以下是其中一些。

1)在C ++中,在聲明函數(shù)之前調(diào)用函數(shù)是編譯器錯(cuò)誤。但是在C語(yǔ)言中,它可以編譯

2)在C ++中,使普通指針指向const變量是編譯器錯(cuò)誤,但在C中是允許的。

3)在C語(yǔ)言中,可以將void指針直接分配給其他一些指針,例如int *,char *。但是在C ++中,必須顯式地鍵入void指針。

使用malloc()時(shí),我們會(huì)注意到這一點(diǎn)。malloc()的返回類(lèi)型為void *。在C ++中,我們必須顯式將malloc()的返回值類(lèi)型轉(zhuǎn)換為適當(dāng)?shù)念?lèi)型,例如“ int * p =(int *)malloc(sizeof(int))”。在C語(yǔ)言中,不需要類(lèi)型轉(zhuǎn)換。
4)以下程序可以在C中編譯并正常運(yùn)行,但是在C ++中編譯失敗。C ++中的const變量必須初始化,但在c中則沒(méi)有必要。感謝Pravasi Meet提出了這一點(diǎn)。

第4行[錯(cuò)誤]未初始化的const'a'[-fpermissive]
5)這是最差的答案,但仍然是有效答案。我們可以使用特定于C ++的關(guān)鍵字之一作為變量名。該程序不會(huì)在C ++中編譯,但會(huì)在C中編譯。

同樣,我們可以使用其他關(guān)鍵字,例如delete,explicit,class等。
6)?C ++比C做更嚴(yán)格的類(lèi)型檢查。例如,以下程序在C中編譯,但不在C ++中編譯。在C ++中,我們得到編譯器錯(cuò)誤“從'int'到'char *'的無(wú)效轉(zhuǎn)換”。感謝Pravasi Meet添加了這一點(diǎn)。

7)?C ++需要主返回'int'類(lèi)型

希望對(duì)你有幫助!更多編程知識(shí)點(diǎn),會(huì)持續(xù)分享哦~
另外如果你想更好的提升你的編程能力,學(xué)好C語(yǔ)言C++編程!彎道超車(chē),快人一步!筆者這里或許可以幫到你~

UP在主頁(yè)上傳了一些學(xué)習(xí)C/C++編程的視頻教程,有興趣或者正在學(xué)習(xí)的小伙伴一定要去看一看哦!會(huì)對(duì)你有幫助的~
歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長(zhǎng)比自己琢磨更快哦!
編程學(xué)習(xí)書(shū)籍分享:

編程學(xué)習(xí)視頻分享:
