여기에서 우리는 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()'