2013-10-15 1 views
1

다른 파일의 사용을 모방 한 특정 줄에서 오류가 발생합니다. 프로토 타입으로 PyChar_addGetSetter을 (정의 않습니다오류 : 예상되는 선언 지정자 또는 문자열 상수 앞에 '...'이 표시됨

#include <Python.h> 
#include "../scripts/pychar.h" 

을 그리고 pychar.h) :

PyObject *pyCharGetHeight(PyChar *self, void *closure) { 
    CHAR_DATA *ch = PyChar_AsChar((PyObject *)self); 
    PyObject *height = NULL; 
    if(ch != NULL) height = Py_BuildValue("s", charGetHeight(ch)); 
    return height; 
} 

PyChar_addGetSetter("height", pyCharGetHeight, NULL, "Returns character's height"); 

내가 다음이 포함됩니다 사용하고

error: expected declaration specifiers or â...â before string constant

, PyChar_addGetSetter ... 라인 다음과 같은 오류를 반환 여기 :

void PyChar_addGetSetter(const char *name, void *g, void *s, const char *doc); 

기능과 같이 ../scripts/pychar.c로 작성하면 다음과

void PyChar_addGetSetter(const char *name, void *g, void *s, const char *doc) { 
    // make sure our list of get/setters is created 
    if(pychar_getsetters == NULL) pychar_getsetters = newList(); 

    // make the GetSetter def 
    PyGetSetDef *def = calloc(1, sizeof(PyGetSetDef)); 
    def->name  = strdup(name); 
    def->get   = (getter)g; 
    def->set   = (setter)s; 
    def->doc   = (doc ? strdup(doc) : NULL); 
    def->closure  = NULL; 
    listPut(pychar_getsetters, def); 
} 

이 인식되지 않는 구조 또는 형식처럼 보인다, 내 기능을 추측하고있다.

+0

'PyChar_addGetSetter'는 C API의 함수가 아니므로 어디에서 왔습니까? (아마도 "../script/pychar.h"파일에서) 당신이 작성한 함수라면, 호출 코드와 프로토 타입뿐만 아니라 그 함수의 소스 코드를 보여 주어야합니다. (예를 들어, 버그는 쉽게'CHAR_DATA'가 길잃은 팸이나 뭔가있는 매크로 일 수 있습니다.) – abarnert

+0

@abarnert 오류는 pychar.c 파일에 올라 오지 않으며 단지'PyChar_addGetSetter (" 높이 ", pyCharGetHeight, NULL,"문자의 높이를 반환합니다 ");가 포함되어 있으면 오류없이 다른 곳에서 사용됩니다. 가장 주목할만한 것은 pychar.c입니다. – ToothlessRebel

답변

3

.c 파일의 최상위 레벨에서 함수를 호출하는 것처럼 보입니다. 너는 그렇게 할 수 없다.

오류 메시지가 약간 더 좋을 수도 있지만 gcc가 PyChar_addGetSetter이라는 유형을 선언하거나 해당 유형의 전역 변수를 선언하려는 시도로 해석하고 어느 쪽이든 해석하지 못하는 것 같습니다. 그 시도가 왜 실패했는지 말해줍니다.

+0

최상위 수준에서? 답의 첫 줄을 더 명확하게 할 수 있습니까? 형식을 선언하려고 시도하는 것처럼 보이지만 헤더에 선언되어야합니다. – ToothlessRebel

+0

오! 와, 예, "전화"는 당신이 절대적으로 옳습니다. 고맙습니다! – ToothlessRebel

+0

@ToothlessRebel : 첫 번째 문장을 명확히하기 위해 아직도 나를 필요로합니까? – abarnert

관련 문제