2012-11-22 4 views
3

나는이 같은 enumstruct을 정의 :C에서 열거 형에 값을 지정하는 방법은 무엇입니까?

Error 64: Type mismatch (initialization) (int/enum) 

이 오류의 이유는 무엇인가

typedef enum 
{ 
    MONDAY = 1, 
    TUESDAY, 
    WEDNESDAY 
} ThreeDays; 

typedef struct 
{ 
    int hello; 
    ThreeDays day; 
} Weekday; 

static Weekday weekday = { 1, 2}; 

가 그럼 난 보풀에서 다음과 같은 오류가있어? 어떻게 해결할 수 있습니까?

+0

평일 평일 평일 = {1, MONDAY};을 (를) 사용해 보셨습니까? – sgarizvi

+1

C에서 경고가 표시되고 C++에서 경고가 표시됩니다. 오류가 아닙니다. –

+0

@ratzip 그러면 C 컴파일러가 잘못되었습니다. 어떤 컴파일러를 사용하고 있습니까? – nos

답변

6

가 당신의 열거를 사용하여 열거 형이지만 열거 형에서 기호를 전달하지 않으며 호환 유형 (예 : (ThreeDays)2)의 캐스트도 전달하지 않습니다.

Lint의 경고를 피하려면 열거 형 기호를 그대로 사용하십시오.

-3

코드에서 enum에 대한 맞춤법이 잘못되었습니다. 대신 메릭스의

typedef enum { MONDAY = 1, TUESDAY, WENDESDAY }three; 작업 :

-1

를 사용하여 텍스트 명명 : 당신이 있기 때문에

static Weekday weekday = {1,TUESDAY}; 

린트가 불평 : 그것을 위해 지어진 무엇

use static Weekday weekday = { Mon , Tue , ... } ; 
+0

이것은 의미가 없습니다. 'Weekday'는 열거 형이 아니라'int'라는'hello'라는 첫 번째 필드를 가지고 있습니다. – unwind

1

내가 열거 형을 사용했기 때문에 노력하고있는 것을 실제로하고 싶지 않습니다. 그것의 요점은 그것을 유형으로 보는 것입니다. 유형에 따라 int 값으로 표시된 값의 유형을 의미합니다. 잉크는 여러 유형을 구분할 수있는 간단한 방법입니다.

예를 들어 당신은 주

Enum{ 
     monday,tuesday, .... 
} 

내가 그것을 사용할 때 보통 내가 내 노드를 구별 할 수 있도록 내가 노드의 컬렉션에 사용하고있는 구조체를 이름을 지정하는 것입니다

의 일을 사용할 수 있습니다.

열거 형을 특정 숫자로 설정하면 그 목적이 다소 떨어집니다. 당신이 원할 때 참조하기를 원하기 때문에 최종 변수를 원하는 것 같습니다. 그래서 언제나 그 값을 얻기위한 최종 int를 생성하십시오.