2011-09-08 6 views
3

C++의 더 엄격한 유형 안전 때문에 C++ 파일로 컴파일 된 경우 코드 중 일부는 C++ 컴파일러로 컴파일되지 않습니다. C 코드를 사용하고 유효한 C++ 코드를 생성하는 도구가 있습니까? 즉 C++ 컴파일러로 코드를 컴파일하는 데 필요한 코드를 C 코드에 추가합니다.C to C++ 변환기

C 및 C++ 코드를 연결할 수 있다는 것을 알고 있지만 여기서는 C 코드를 C++ 코드 파일로 처리하는 C++ 컴파일러로 컴파일하는 것에 대해 구체적으로 설명합니다.

+1

David, 그 도구는 시간과 노력을 필요로하지 않습니다. (! – MetallicPriest

+4

타입 안전 시스템이있어 버그를 작성하는 것을 방지합니다 .C++ 컴파일러가 불만을 제기하는 곳을 체계적으로 검사하지 않고 ? – jeffythedragonslayer

답변

1

덜 엄격하거나 다른 컴파일러가되도록 추가 플래그로 컴파일 해보십시오.

편집 # 1 : 댓글을 추가 할 수 없습니다. 나는 아이디어를 던지고있다. 나는 이것을 직접 실행하지 않았다. 조금 파고 들자면, C++이 C++의 하위 집합이 아닌 집합의 일부로 작성되었는지 여부에 따라 SOL이 될 수 있습니다.

비표준 표준 문제 인 경우 문제를 해결할 수 있습니다. gcc를 사용하고 있다면 Microsoft Visual C++ 또는 OpenWatcom을 사용해보십시오.

국기에 관해서는 당신이 관용을 할 수 있다고 생각했지만 잘못된 것일 수 있습니다. 플래그는 컴파일러에 따라 다르지만 -std = isoC99, -compat, -feat = features를 사용했다고 생각합니다.

+0

그리고 어떻게하면 좋을까요? 그걸 할 수 있을까요? – MetallicPriest

0

그런 도구가 있는지 확실하지 않습니다.
필자는 절대로 필요가 없으므로 이것을 시도하지 않았지만,
C 코드를 lib로 컴파일 할 수 있습니다. 어쩌면 운이 좋다면 C 코드의 헤더 파일 만 유효한 C++ 일 수 있습니다. 이들 헤더를 C++에 포함시키고 lib에 링크하십시오.

다시 한번 시도한 적이 없으므로 작동하지 않을지 모릅니다. 그냥 생각.

3

C 코드를 프로젝트 내에서 분리 된 .c 파일에 넣기 만하면 C로 컴파일 할 수 있습니다. 어떤 컴파일러를 사용하고 있습니까?

+0

내가 그렇게 할 수 있다면 내가했을 텐데 그 코드를 수정해야하고 C++ 구조를 넣어야하기 때문에 별도의 C 파일로 분리하는 것은 불가능합니다. – MetallicPriest

2

언어는 직접 변환하려는 모든 시도가 실패 할 정도로 충분히 다릅니다. 중간 인공 언어를 통해 가야만합니다. C 언어는 이미 기본적으로 컴파일되어 실행될 수 있습니다. 그 시점에서 결과 C++은보기 싫어서별로 못 생길 것입니다.

#ifdef __cplusplus 
    extern "C" 
#endif 

당신이 C++ FAQ 라이트의 "How to mix C and C++"를 참조 할 수 있습니다 :

1

나는 다음과 같이 당신이 당신의 관련 헤더 파일에 C 및 C++ 코드를 사용하는 컴파일러 지시어의 혼합 인 것으로이 문제를 고려할 필요가 생각 주제에 대한보다 철저한 토론