Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

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에서는 'new'라는 변수를 사용할 수 있습니다. 그러나 C++에서는 이 이름을 변수 이름으로 사용할 수 없습니다. C++에서는 'new'가 키워드이기 때문입니다. 메모리 공간을 할당하는 데 사용됩니다.

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를 main()의 반환 유형으로 사용할 수 있지만 C++에서는 int를 main()의 반환 유형으로 사용해야 합니다.

C.

예시

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

출력(C)

Hello World

출력(C++)

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