編寫一個在C++中無法編譯的C程式


在這裡,我們將編寫一些在C++中無法編譯的C程式。儘管C++被認為是C的繼承者,它擁有C的所有特性併兼容C程式碼,但有些程式在用C++編譯器編譯時無法編譯或會報錯。

一些在C++中無法編譯的C程式的列表如下:

  • 在宣告之前呼叫函式 - 在C++中,在宣告之前呼叫函式會產生編譯錯誤。但在C中可以正常工作。

示例

 線上演示

#include <stdio.h>
int main(){
   printHello();
   return 0;
}
void printHello(){
   printf("TutorialsPoint");
}

輸出

TutorialsPoint
  • 使用型別轉換指標 - 如果我們在C中宣告一個void指標,然後使用此指標指向其他資料變數。編譯器本身可以在C中做到這一點,但在C++中,這些指標需要進行型別轉換。

示例

 線上演示

#include <stdio.h>
int main(){
   void *ptr;
   int *ptr2 = ptr;
   return 0;
}
  • 宣告常量值而不初始化 - 在C中,可以宣告常量值而不為其提供任何值,但在C++中這樣做會返回錯誤。

示例

 線上演示

#include <stdio.h>
int main(){
   const int x;
   printf("%d", x);
   return 0;
}

輸出

0
  • 使用普通指標與const變數 - 在C++中不允許這樣做,而C允許使用普通指標與const變數。

示例

 線上演示

#include <stdio.h>
int main(void){
   int const x = 3424;
   int *cptr = &x;
   printf("value of pointer : %d\n", *cptr);
   return 0;
}

輸出

 Value of pointer: 3424
  • 使用特定關鍵字作為變數名 - 在C程式語言中,使用某些關鍵字作為變數名是有效的,即在C中可以編譯,但在C++中卻不能編譯。

示例

 線上演示

#include <stdio.h>
int main(void){
   int class = 5;
   printf("%d", class);
}

輸出

5

這些關鍵字包含在C++中,還有一些是新的,例如new、delete、explicit等。

更新於:2020年7月17日

瀏覽量 182 次

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.