struct 를 재정의 할 수 있나여?
mac os x용 풀그림은 gnustep으로 리녹스에 포팅중입니다.,
그런데 그냥 컴파일 하면
ObjCSharpBridge.m: In function 'dumpClass':
ObjCSharpBridge.m:114: error: 'struct objc_class' has no member named 'isa'
ObjCSharpBridge.m:117: error: 'struct objc_class' has no member named 'isa'
ObjCSharpBridge.m:120: error: 'struct objc_class' has no member named 'methodLists'
ObjCSharpBridge.m:121: error: 'struct objc_class' has no member named 'cache'
ObjCSharpBridge.m:123: error: 'struct objc_class' has no member named 'methodLists'
ObjCSharpBridge.m:124: error: 'struct objc_class' has no member named 'methodLists'
make: *** [libObjCSharp_la-ObjCSharpBridge.lo] 오류 1
이런 에러가 나서 objc_class_e란 새로운 구조체를 만들어서 해결했습니다.
원래 gcc-objc에 정의된 부분
코드:
typedef struct objc_object {
struct objc_class* class_pointer;
} *id;
새로 만든 구조체
코드:
**struct objc_class_e {
struct objc_class *isa;
struct objc_class *super_class;
struct objc_class *name;
struct objc_class version;
struct objc_class info;
struct objc_class instance_size;
struct objc_class *ivars;
struct objc_class **methodLists;
struct objc_class *cache;
struct objc_class *protocols;
}; **/
기존의 구조체를 재정의 하면 원래 소스 안건드려도 될 거 같아서 질문합니다.
참고로 저는 아직 다른 사람이 만든 소스 조금 건드리는 수준입니다.
위로
사용자 정보 보기 비밀 메시지 보내기 MSN 메신저
chunsj
가입: 2003년 9월 2일
올린 글: 75
올리기올려짐: 목 2월 09, 2006 10:19 am 주제: Re: struct 를 재정의 할 수 있나여? 인용과 함께 답변
hys545 씀:
mac os x용 풀그림은 gnustep으로 리녹스에 포팅중입니다.,
그런데 그냥 컴파일 하면
ObjCSharpBridge.m: In function 'dumpClass':
ObjCSharpBridge.m:114: error: 'struct objc_class' has no member named 'isa'
ObjCSharpBridge.m:117: error: 'struct objc_class' has no member named 'isa'
ObjCSharpBridge.m:120: error: 'struct objc_class' has no member named 'methodLists'
ObjCSharpBridge.m:121: error: 'struct objc_class' has no member named 'cache'
ObjCSharpBridge.m:123: error: 'struct objc_class' has no member named 'methodLists'
ObjCSharpBridge.m:124: error: 'struct objc_class' has no member named 'methodLists'
make: *** [libObjCSharp_la-ObjCSharpBridge.lo] 오류 1
이런 에러가 나서 objc_class_e란 새로운 구조체를 만들어서 해결했습니다.
원래 gcc-objc에 정의된 부분
코드:
typedef struct objc_object {
struct objc_class* class_pointer;
} *id;
새로 만든 구조체
코드:
**struct objc_class_e {
struct objc_class *isa;
struct objc_class *super_class;
struct objc_class *name;
struct objc_class version;
struct objc_class info;
struct objc_class instance_size;
struct objc_class *ivars;
struct objc_class **methodLists;
struct objc_class *cache;
struct objc_class *protocols;
}; **/
에러 나는 부분
void dumpClass (struct objc_class *cls) { printf ("name: %s %s\n", cls->name, cls->isa->name); printf ("\tversion: %i\n", cls->version); printf ("\tinfo: %i\n", cls->info); printf ("\tinstance_size: %i %i\n", cls->instance_size, cls->isa->instance_size); printf ("\tsuper_class: %x %s\n", cls->super_class, cls->super_class->name); printf ("\tivars: %x\n", cls->ivars); printf ("\tmethodLists: %x\n", cls->methodLists); printf ("\tcache: %x\n", cls->cache); printf ("\tprotocols: %x\n", cls->protocols); if (cls->methodLists) { dumpMethodList (*cls->methodLists); }
댓글 달기