2011-11-14 2 views
3

나는 c 파일을 만들고 이것을 맨 위에 추가합니다.Xcode- 목표 C 파일을 C 파일로 가져 오기

#import <GLKit/GLKit.h> 

이상한 오류가 발생합니다. 객관적인 C 파일을 가져 오는 경우입니다. 다른 질문/답변에서 나는 이것에 관해 아무것도 보지 못했습니다. 모두가 C와 Objective C가 완벽하게 함께 작동하도록 제안하는 것 같습니다!

gl.h 
Unknown type name 'GLenum'; did you mean 'enum'? 

GLKNamedEffect.h 
Expected identifier or '(' 

답변

6

, 당신은 사용할 수 있어야합니다 (즉, 당신이 이야기 한 것은 거짓이다). 이제 그렇게하면 결과 파일은 Objective-C 파일이되고 Objective-C 컴파일러가 컴파일되어야하므로 .m 확장명을 지정해야합니다.

즉 Objective-C는 C의 위에 구축 된 언어이므로 구문을 "혼합"하지만 Objective-C 컴파일러 만 혼합을 컴파일 할 수 있습니다. C 컴파일러는 ObjC에 대해 아무 것도 모른다.

파일의 확장자를 변경하면 컴파일러를 선택하는 중이고 Objective-C 헤더를 가져 와서 Objective-C 라이브러리로 호출하는 "일반 C"파일을 가질 수 있습니다.

+0

Objective-C는 C의 ** 수퍼 세트 **이므로 Objective-C 파일에서 C를 사용할 수 있지만 그 반대의 경우는 아닙니다. – Abizern

+0

OP에서 - 모두가 C와 Objective C가 매끄럽게 함께 작동하도록 제안하는 것 같습니다. - 그들은 매끄럽지 않고, 따라서 많은 축약 된 대답 – KevinDTimm

+0

답변을 주셔서 감사합니다. 이제 모든 것이 완전히 이해됩니다. –

1

C는 objective-c가 아니므로 객관적인 소스 또는 포함 파일을 가져올 수 없습니다. 파일 내에서

#import <GLKit/GLKit.h> 

: 당신이 something.c에서 something.m로 C 파일의 이름을 변경하는 경우