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에서 전역 데이터 객체는 extern 키워드를 사용하지 않고 여러 번 선언될 수 있습니다. 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 포인터를 포인터 유형의 변수에 대한 할당의 오른쪽 연산자로 사용하거나 변수를 초기화할 수 있습니다.

예시

#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()'