sourcecode

GCC가 .cpp 파일을 C로 컴파일하도록 강제 적용

copyscript 2023. 7. 3. 23:08
반응형

GCC가 .cpp 파일을 C로 컴파일하도록 강제 적용

외부에서 제공한 .cpp 파일을 가지고 있습니다.이것은 C 호환 코드와 약간의 C++의 혼합입니다.C++ 코드는 C++ 기능을 활용하기 위한 C 주변의 래퍼일 뿐입니다.

그것은 사용합니다.#ifdef __cplusplusC++ 코드를 보호하기 위한 매크로, 좋습니다.유감스럽게도 GCC를 사용하여 컴파일을 시도하면 파일 종료로 인해 C++로 처리됩니다.사이의 차이점을 알고 있습니다.gcc그리고.g++저는 C++로 컴파일하고 싶지 않습니다.

GCC가 이 파일을 C 파일로 처리하도록 강제할 수 있는 방법이 있습니까?예를 들어 사용해 보았습니다. --std=c99그러나 이렇게 하면 C99가 C++에 유효하지 않다는 오류가 발생합니다.

파일 이름을 .c로 변경하는 것은 가능하지만, 외부에서 제공하는 것이고 원본으로 유지하는 것이 좋을 것이기 때문에 가능하면 피하고 싶습니다.

-x에 대한 선택권.gcc다음과 같은 모든 입력 파일의 언어를 지정할 수 있습니다.

$ gcc -x c your-file-name.cpp

파일 하나만 특수하게 구분하려면 다음을 사용할 수 있습니다.-x none특수 처리를 종료합니다.

$ gcc -x c your-filename.cpp -x none other-file-name.cpp

(your-filename.cppC로 컴파일될 예정인 반면,other-file-name.cpp확장자를 사용하고 C++로 컴파일합니다.)

foo.cpp를 C 파일로 컴파일하려면 foo.c라는 이름의 새 파일을 만들고 다음을 전체 내용으로 넣을 수 있습니다.

#include "foo.cpp"

이제 foo.cpp 대신 foo.c를 컴파일합니다.

우리는 CVS의 10년 역사를 보존하면서 일부 파일에서 C++ 기능을 사용하기 시작하기 위해 이것을 사용했습니다(.c 파일을 C++로 컴파일).또한 GCC뿐만 아니라 각 플랫폼의 네이티브 컴파일러를 사용하여 빌드하므로,-x절반 수준의 컴파일러에 대해 동등한 명령을 실행한 다음 빌드 시스템이 특정 파일에만 해당 명령을 적용하도록 합니다.

언급URL : https://stackoverflow.com/questions/4216247/forcing-gcc-to-compile-cpp-file-as-c

반응형