Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

โปรแกรม C ที่ไม่คอมไพล์ใน C++


ภาษา C++ ได้รับการออกแบบโดยการเพิ่มคุณสมบัติเพิ่มเติม เช่น แนวคิดเชิงวัตถุด้วยภาษาซี โปรแกรม C ส่วนใหญ่สามารถคอมไพล์ได้โดยใช้คอมไพเลอร์ C++ เช่นกัน แม้ว่าจะมีบางโปรแกรมที่ไม่สามารถคอมไพล์โดยใช้คอมไพเลอร์ C++ ได้

ให้เราดูโค้ดที่จะคอมไพล์ในคอมไพเลอร์ C แต่ไม่ใช่ในคอมไพเลอร์ C++

ในโปรแกรมนี้จะมีข้อผิดพลาดในการรวบรวมหนึ่งรายการสำหรับรหัส C++ เพราะเป็นการพยายามเรียกใช้ฟังก์ชันที่ไม่เคยประกาศมาก่อน แต่ในภาษา C อาจคอมไพล์

สำหรับ C.

ตัวอย่าง

#include<stdio.h>
int main() {
   myFunction(); // myFunction() is called before its declaration
}
int myFunction() {
   printf("Hello World");
   return 0;
}

เอาต์พุต(C)

Hello World

เอาต์พุต (C++)

[Error] 'myFunction' was not declared in this scope

ใน C ++ ตัวชี้ปกติตัวหนึ่งไม่สามารถชี้ตัวแปรคงที่บางตัวได้ แต่ใน C ตัวชี้สามารถชี้ได้

สำหรับ C.

ตัวอย่าง

#include<stdio.h>
int main() {
   const int x = 10;
   int *ptr;
   ptr = &x;
   printf("The value of x: %d", *ptr);
}

เอาต์พุต(C)

The value of x: 10

เอาต์พุต (C++)

[Error] invalid conversion from 'const int*' to 'int*' [-fpermissive]

ใน C ++ เราต้องพิมพ์อย่างชัดเจนเมื่อเราต้องการกำหนดประเภทพอยน์เตอร์อื่นๆ เช่น int*, char* ให้กับตัวชี้ void แต่ใน C หากไม่ใช่แบบแคสต์ ตัวชี้จะถูกคอมไพล์

สำหรับ C.

ตัวอย่าง

#include<stdio.h>
int main() {
   void *x;
   int *ptr = x;
   printf("Done");
}

เอาต์พุต(C)

Done

เอาต์พุต (C++)

[Error] invalid conversion from 'void*' to 'int*' [-fpermissive]

ใน C++ เราต้องเริ่มต้นตัวแปรคงที่ แต่ในภาษา C สามารถคอมไพล์ได้โดยไม่ต้องมีการกำหนดค่าเริ่มต้น

สำหรับ C.

ตัวอย่าง

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

เอาต์พุต(C)

x: 0

เอาต์พุต (C++)

[Error] uninitialized const 'x' [-fpermissive]

ใน C เราสามารถใช้ตัวแปรบางตัวชื่อ 'ใหม่' แต่ในภาษา C++ เราไม่สามารถใช้ชื่อนี้เป็นชื่อตัวแปรได้ เนื่องจากใน C++ คำว่า 'ใหม่' คือคีย์เวิร์ด ใช้เพื่อจัดสรรพื้นที่หน่วยความจำ

สำหรับ C.

ตัวอย่าง

#include<stdio.h>
int main() {
   int new = 10;
   printf("new: %d",new);
}

เอาต์พุต(C)

new: 10

เอาต์พุต (C++)

[Error] expected unqualified-id before 'new'
[Error] expected type-specifier before ')' token

เราไม่สามารถคอมไพล์โค้ดต่อไปนี้ใน C++ สิ่งนี้จะส่งคืนข้อผิดพลาดเมื่อเราพยายามแปลง int เป็น char* แต่ในภาษา C จะทำงานได้ดี

สำหรับ C.

ตัวอย่าง

#include<stdio.h>
int main() {
   char *c = 123;
   printf("c = %u", c);
}

เอาต์พุต(C)

c = 123

เอาต์พุต (C++)

[Error] invalid conversion from 'int' to 'char*' [-fpermissive]

ใน C เราสามารถใช้ void เป็น return type ของ main() แต่ใน C++ เราต้องใช้ int เป็น return type ของ main()

สำหรับ C.

ตัวอย่าง

#include<stdio.h>
void main() {
   printf("Hello World");
}

เอาต์พุต(C)

Hello World

เอาต์พุต (C++)

[Error] '::main' must return 'int'