2013-05-25 16 views
2

C++ 소스 코드에 Apportable을 사용했을 때 에 정의 된 기호를 찾을 수 없습니다.stdint.h에서 기호를 찾을 수 없습니다.

error: use of undeclared identifier 'UINT8_MAX' 

이 코드는 Xcode와 잘 작동하며이 오류는 Apportable에서만 발생합니다. 나는 #include <cstdint>을 추가했으나 효과가 없었다.

여기에 현재 .cpp 파일이 있습니다.

#include <cstdint> 
#include "Pixel.h" 

namespace 
Eonil 
{ 
    namespace 
    Graphics 
    { 
     using namespace std; 

     Pixel::Pixel(glm::vec4 const vector) 
     { 
      r = vector.r * ((Scalar)UINT8_MAX); 
      g = vector.g * ((Scalar)UINT8_MAX); 
      b = vector.b * ((Scalar)UINT8_MAX); 
      a = vector.a * ((Scalar)UINT8_MAX); 
     } 

     glm::vec4 const 
     Pixel::vector() const 
     { 
      return glm::vec4(((Scalar)r)/((Scalar)UINT8_MAX), 
           ((Scalar)g)/((Scalar)UINT8_MAX), 
           ((Scalar)b)/((Scalar)UINT8_MAX), 
           ((Scalar)a)/((Scalar)UINT8_MAX)); 
     } 
    } 
} 

무엇이 누락 되었습니까?

+0

devs에게 가져 가십시오. 아마도 아직 추가하지 않은 매크로 일 겁니다. 또는 #undef 및 # 직접 정의하십시오. – LearnCocos2D

+0

@ LearnCocos2D 현재이 문제는 undef/define을 사용하여 해결할 수 있습니다.하지만 이것을 devs로 가져와야한다고 생각합니다. – Eonil

답변

3

매크로는 __STDC_LIMIT_MACROS가 정의되어있을 때 사용할 수 있습니다 (추가로 __STDC_CONSTANT_MACROS도 누락 된 것 같습니다). 이것은 아마도 C++를 컴파일 할 때 부정확하게 gated되거나 빠져 있습니다. Objective-C와 C는 UINT8_MAX 및 동반 매크로에 대해 이러한 정의를 선택합니다. 지금은 두 매크로를 전역 적으로 정의 할 수 있으며 프로젝트에 나쁜 영향을주지 않아야합니다.