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

ความไม่ลงรอยกันระหว่าง C และ C++


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

  • เราสามารถกำหนดฟังก์ชันโดยใช้ไวยากรณ์ ซึ่งระบุประเภทอาร์กิวเมนต์หลังรายการอาร์กิวเมนต์หรือไม่ก็ได้

ตัวอย่าง

#include<stdio.h>
void my_function(x, y)int x;int y; { // Not valid in C++
   printf("x = %d, y = %d", x, y);
}
int main() {
   my_function(10, 20);
}

ผลลัพธ์

x = 10, y = 20

ผลลัพธ์

Error in C++ :- x and y was not declared in this scope
  • ในภาษา C หรือเวอร์ชันเก่ากว่าของ C++ ประเภทตัวแปรเริ่มต้นคือจำนวนเต็ม แต่ใน C++ ที่ใหม่กว่า จะทำให้เกิดข้อผิดพลาด

ตัวอย่าง

#include<stdio.h>
main() {
   const x = 10;
   const y = 20;
   printf("x = %d, y = %d", x, y);
}

ผลลัพธ์

x = 10, y = 20

ผลลัพธ์

Error in C++ :- x does not name a type
y does not name a type
  • ในภาษา C ออบเจ็กต์ข้อมูลส่วนกลางอาจถูกประกาศหลายครั้งโดยไม่ต้องใช้คีย์เวิร์ดภายนอก คอมไพเลอร์ C พิจารณาเพียงครั้งเดียวสำหรับการประกาศหลายครั้ง

ตัวอย่าง

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

ผลลัพธ์

x = 10

ผลลัพธ์

Error in C++ :- Redefinition of int x
  • ในภาษา C เราสามารถใช้ void pointer เป็นตัวดำเนินการทางขวามือของงานที่มอบหมายหรือเริ่มต้นตัวแปรของตัวชี้ประเภทใดก็ได้

ตัวอย่าง

#include<stdio.h>
#include<malloc.h>
void my_function(int n) {
   int* ptr = malloc(n* sizeof(int)); //implicitly convert void* to int*
   printf("Array created. Size: %d", n);
}
main() {
   my_function(10);
}

ผลลัพธ์

Array created. Size: 10

ผลลัพธ์

Error in C++ :- Invalid conversion of void* to int*
  • ในภาษา C หากไม่ได้ระบุประเภทอาร์กิวเมนต์ เราสามารถส่งอาร์กิวเมนต์ได้หลายรายการ

ตัวอย่าง

#include<stdio.h>
void my_function() {
   printf("Inside my_function");
}
main() {
   my_function(10, "Hello", 2.568, 'a');
}

ผลลัพธ์

Inside my_function

ผลลัพธ์

Error in C++ :- Too many arguments to function 'void my_function()'