2010-07-18 5 views
0

cpp의 objective-c 헤더를 포함 할 수 있습니까? cpp .h 파일에서 "cocos2d.h"를 # 포함하려고하면 @ 및 @에 대해 불평하는 많은 오류가 표시되기 때문입니다.C++ 파일의 objective-c 헤더 포함

C++ 파일에 obj-c 헤더가 포함될 수 있습니까?

+1

파일을 포함하는 것은 한 파일에서 다른 파일로 코드를 복사하여 붙여 넣는 것과 같습니다. 나는 왜 그들이 다른 언어이기 때문에 이것이 효과가있을 것이라고 생각하는지 모르겠습니다. 질문해야 할 질문은 "어떻게 C++ 코드를 객관적인 C 코드와 인터페이스 할 수 있는가"입니다. – Cogwheel

+0

.mm 파일을 사용할 때 Obj-c는 cpp를 포함하여 잘 작동하므로 반전이 가능하다고 생각했습니다. – sharvey

+0

예,하지만 반대쪽에는 주로 C++를 사용하는 .mm 파일에 ObjC가 포함됩니다. –

답변

8

Objective-C++ (예 : 파일 확장자를 .mm으로 변경)를 사용하여 언어를 혼합해야 할 수 있지만 일반 C++ 소스는 작동하지 않습니다.

  • .m 파일은 단지 C++ 소스가
  • .mm 혼합 된 목표 - C++ 소스를 할 수 있도록 목표 - C 소스를
  • .cpp 파일을 허용 - 즉, 목표 - C와 C++ :

    는 명확하게하려면 몇 가지 제한이 있습니다

대신 두 개의 세계를 분리하여 보관해야하는 경우 래퍼 클래스 C++에서 Objective-C 세부 사항을 숨기고 그 반대도 마찬가지입니다.

+0

C++에서 objective-c 라이브러리로 인터페이싱 할 수 없습니까? 바라기를 바랍니다. – sharvey

+0

@shar : 기술적으로 당신은 런타임 함수를 사용하여 일반 C++에서 ObjC를 호출 할 수 있습니다.하지만 그렇게하고 싶지는 않을 것입니다. 혼합 접근법을 사용하거나 ObjC 클래스를 랩핑하면됩니다. –

+0

@Georg Fritzsche : 그렇지만 .h 또는 .mm 파일에서 cpp 구문을 사용할 수없는 것 같습니다. – sharvey

1

혼합 objc/C++로 컴파일 할 때 가능합니다. Cocoa 응용 프로그램은 양방향으로 혼합 된 언어로 작성할 수 있습니다. C++ 내부에서 obj-c 클래스를 사용하거나 obj-c 객체에서 C++ 클래스를 사용할 수 있습니다.

당신의 경우에는 obj-c 코드가 허용되지 않는 순수한 C++ 응용 프로그램을 컴파일한다고 가정합니다.

+0

아니요. iphone 용으로 개발 중이며 cpp 헤더 파일은 .mm 파일에서 참조됩니다. – sharvey

1

C++는 Objective-C가 무엇인지 전혀 모릅니다. 따라서 .cpp에 Objective-C .h를 포함시키는 것은 아무런 의미가 없습니다.

다른 점은 .m (Objective-C) 대신 .mm 파일 확장명 (Objective-C++)을 사용하는 것이 좋습니다.

+1

총체적 일 것입니다.하지만 실제로 .cpp에 Objective-C가 포함 된 헤더를 포함시키려는 경우 Objective-C를'#ifdef __OBJC__' ...'#endif '에 포장하여 파싱되지 않도록하십시오. –