2013-02-04 2 views
2

라이브러리를 컴파일하려고합니다.오류 : '='토큰 앞에 예상되는 식별자

Property.h:66:6: error: expected identifier before '=' token 
Property.h:66:6: error: expected '}' before '=' token 
Property.h:66:6: error: expected unqualified-id before '=' token 

내가 올바르게 정의되지 않는이 열거로 인한 믿고 다른 오류가 있습니다 :

class ROCKETCORE_API Property 
{ 
public: 
enum Unit 
{ 
    UNKNOWN = 1 << 0, 

    KEYWORD = 1 << 1,   // generic keyword; fetch as <int> 

    STRING = 1 << 2,   // generic string; fetch as <String> 

    // Absolute values. 
    NUMBER = 1 << 3,   // number unsuffixed; fetch as <float> 
    PX = 1 << 4,    // number suffixed by 'px'; fetch as <float> 
    COLOUR = 1 << 5,   // colour; fetch as <Colourb> 
    ABSOLUTE_UNIT = NUMBER | PX | COLOUR, 

    // Relative values. 
    EM = 1 << 6,    // number suffixed by 'em'; fetch as <float> 
    PERCENT = 1 << 7,   // number suffixed by '%'; fetch as <float> 
    RELATIVE_UNIT = EM | PERCENT, 

    // Values based on pixels-per-inch. 
    IN = 1 << 8,    //<<----LINE 66----- number suffixed by 'in'; fetch as <float> 
    CM = 1 << 9,    // number suffixed by 'cm'; fetch as <float> 
    MM = 1 << 10,    // number suffixed by 'mm'; fetch as <float> 
    PT = 1 << 11,    // number suffixed by 'pt'; fetch as <float> 
    PC = 1 << 12,    // number suffixed by 'pc'; fetch as <float> 
    PPI_UNIT = IN | CM | MM | PT | PC 
}; 

오류 출력됩니다.

이런 일이 발생하는 이유 어떤 생각?

Eclipse에서 MinGW 4.7.2 사용.

+1

그 열거 형은 잘 컴파일됩니다. 어떻게 사용합니까? – chris

+3

어떤 라인이 66입니까? – AnT

+0

전체 파일을 넣어야합니까? – Etherealone

답변

8

이러한 경우의 일반적인 문제는 포함 된 일부 헤더에 정의 된 일부 매크로 이름과의 충돌입니다. 귀하의 경우에는 IN이 될 것이며 일부 구현 (MS?)에서는 함수에서 입력 매개 변수를 지정하는 매크로로 사용됩니다.

UNKNOWN 대신 UNIT_UNKNOWN과 같은 열거 형 상수를 지정하는 것이 좋습니다. 또는 모든 "시스템"헤더를 포함시킨 후 #undef IN을 수행 할 수 있지만이 방법은 쉽게 "높은 유지 관리"가 될 수 있습니다. 더 좋은 아이디어는 다시 짧은 대문자 식별자를 사용하지 않는 것입니다.

+0

어서, 그게 적절한 대답이 아니야. 이것은 주석이어야합니다. – antonijn

+2

오류 메시지를 고려할 때 그럴 가능성이 큽니다. – chris

+0

@chris 최근 편집으로 인해 나를 downvoting하지 못했습니다. 선택 사양 '#ifndef _NO_W32_PSEUDO_MODIFIERS #DEFINE IN #DEFINE OUT #ifndef 선택 사양 #DEFINE #endif 다음 #의 endif'이 - - 솔루션 제안 대답 틱 소요 – antonijn

관련 문제