2011-02-14 3 views
3

이것은 무엇을 의미합니까?"함수에 이미 본문이 있습니다"

1>c:\users\vitali\documents\visual studio 2010\projects\salam\tools.cpp(107): error C2084: function 'bool readXMLInteger(xmlNodePtr,const char *,int &)' already has a body 
1>c:\users\vitali\documents\visual studio 2010\projects\salam\tools.h(52) : see previous definition of 'readXMLInteger' 

(107) tools.cpp :

bool readXMLInteger(xmlNodePtr node, const char* tag, int32_t& value) 
{ 
    char* nodeValue = (char*)xmlGetProp(node, (xmlChar*)tag); 
    if(nodeValue) 
    { 
     value = atoi(nodeValue); 
     xmlFreeXOXL(nodeValue); 
     return true; 
    } 

    return false; 
} 

가 tools.h (52)

bool readXMLInteger(xmlNodePtr node, const char* tag, int& value); 
+0

컴파일러와 동일한 파일 사본 (예 : 경로, 저장되지 않은 변경 사항 등)을 확인하십시오. –

+0

Welcome to Stack Overflow! 위에서 게시 한 코드는 문제가 없으므로 오류가 다른 원인에 의해 발생한 것으로 의심됩니다. 다음과 같은 일반적인 오류를 확인하십시오. - 헤더 파일의 끝에 .cpp 파일을'# include '합니까? 잠시 동안 깨끗한 상태로 만들었습니까? 서로 .cpp 파일을 여러 개 포함하고 있습니까? 이것들 (또는 완전히 다른 무엇인가)은 여기서 잘못 될 수 있습니다. 그러나 더 많은 정보가 없으면 제가 도울 수 있다고 생각하지 않습니다. – templatetypedef

답변

5

뜻 어느 시점에 실제 코드로 다시 판독 중임 스트림을 컴파일하므로 함수를 선언하는 것과 반대되는 두 가지 시도가있는 것처럼 보입니다.

전 처리기 명령문을 설정하는 방법에 대해 의심스러운 내용이 있습니다.

2

이것은 코드에서 다른 곳에서 함수가 구현되었음을 의미합니다.

2

아마 당신은 이미 해결책을 찾았지만 나를 위해 솔루션을 재구성 해 놓았습니다.

내 구현을 헤더 파일에서 .cpp 파일로 옮겼으며 .pch 파일에이 정보가 이미 있습니다. 그래서이 오류를 수정하기 위해 다시 빌드해야했습니다.

7

원본 헤더 파일에 포함 가드를 사용 했습니까? 예를 들어

:가 포함되어있는 각 CPP에 re-대해 정의

#ifndef _TOOLS_H_ 
#define _TOOLS_H_ 

... your header body is here ... 

#endif 

이 블록.

0

다음은 실제로 질문에 대답하지 않지만 다른 원인으로 같은 문제가 있습니다. 이 대답은 기록에만 해당됩니다.

일부 사람들은 헤더 파일에 코드를 추가하는 스타일이 매우 좋으므로 cMyClass() {}과 같은 생성자 선언이 이미 선언이 아닌 정의로 간주됩니다 (예 : 헤더 파일에도 있음)

실제 선언으로 변경하여 정의를 제거하십시오. cMyClass();이 특정 종류의 문제를 해결합니다.

관련 문제