Computer >> Máy Tính >  >> Lập trình >> lập trình C

Sự không tương thích giữa C và C ++

Ở đây chúng ta sẽ thấy một số điểm không tương thích giữa C và C ++. Một số mã C có thể được biên dịch bằng trình biên dịch C, nhưng không biên dịch trong trình biên dịch C ++. Và cũng trả về lỗi.

  • Chúng tôi có thể xác định hàm bằng cú pháp, tùy ý chỉ định loại đối số sau danh sách đối số.

Ví dụ

#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);
}

Đầu ra

x = 10, y = 20

Đầu ra

Error in C++ :- x and y was not declared in this scope
  • Trong C hoặc một số phiên bản C ++ cũ hơn, kiểu biến mặc định là số nguyên. Nhưng trong C ++ mới hơn, nó sẽ tạo ra lỗi.

Ví dụ

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

Đầu ra

x = 10, y = 20

Đầu ra

Error in C++ :- x does not name a type
y does not name a type
  • Trong C, các đối tượng dữ liệu toàn cục có thể được khai báo nhiều lần mà không cần sử dụng từ khóa extern. Trình biên dịch C coi nó một lần cho nhiều khai báo.

Ví dụ

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

Đầu ra

x = 10

Đầu ra

Error in C++ :- Redefinition of int x
  • Trong C, chúng ta có thể sử dụng con trỏ void làm toán tử bên phải của một phép gán hoặc khởi tạo biến của bất kỳ loại con trỏ nào.

Ví dụ

#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);
}

Đầu ra

Array created. Size: 10

Đầu ra

Error in C++ :- Invalid conversion of void* to int*
không hợp lệ
  • Trong C, nếu loại đối số không được chỉ định, chúng ta có thể chuyển nhiều đối số.

Ví dụ

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

Đầu ra

Inside my_function

Đầu ra

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