2013-06-19 4 views
-1

나에게 코딩되지 않은 오래된 게임의 소스 코드를 다시 컴파일하려고하는데 컴파일러가 어떤 컴파일러를 사용했는지 전혀 알지 못합니다.
알 수없는 파일에서 정의되지 않은 식별자 오류가 나타납니다. 이 오류는 다음과 같습니다.정의되지 않은 식별자

Error : Undefined identifier 'begin' 
Error : Undefined identifier 'capacity' 
Error : Undefined identifier 'size' 
Error : Undefined identifier 'back' 
Error : Undefined identifier 'pop_back' 

나는 하나 또는 두 개의 헤더 파일이 누락되었다고 확신합니다. 내가 거기에서 놓치고있는 어떤 아이디어?
PS : CodeWarrior IDE를 사용하고 있습니다.

편집 : - 오류주고있다

바로 여기에 코드 라인 -

그것은 당신의 컴파일러처럼 보이는
const OzU32 nCapacity = OzU32(capacity()); 
const OzU32 nAllocated = Capacity() - OzU32(size()); 
std::transform(
      m_pPoolMemory, 
      m_pPoolMemory + nCapacity, 
      begin(), 
      std::ptr_fun(SetPointer<Type>)); 
+0

현재 어떤 컴파일러를 사용하고 있습니까? – Bathsheba

+1

std :: vector methods처럼 보입니다. – spiritwolfform

+0

'boost'처럼 보입니다. – devnull

답변

0

사실 동일한 메소드 이름을 가진 다른 헤더 파일이있어 컴파일러의 혼동을 일으 킵니다. 그래서 메서드 이름 앞에 벡터 네임 스페이스를 추가했습니다. 이처럼 -

vector<Type>::begin() 

그리고 그것은 예 벡터입니다.

1

중 하나를 표준 라이브러리의 일부를 누락되거나하는 것은 설치되지 않은됩니다/구성 정확히.

다음 중 하나를 수행 할 수 있습니다 :

  1. 누락 된 라이브러리의 타사 버전을 설치 다른 컴파일러

  2. 스위치를 (특히이 경로를 포함 확인) 컴파일러의 구성을 수정 (봐 stlport)

  3. 프로그램의 코드를 바꿉니다 누락 된 라이브러리 클래스를 사용하려고합니다.

관련 문제