2011-09-01 2 views
4

다음 코드는 GCC와 맥 OS X에 잘 컴파일하지만 LCC-Win32에서와 Windows에서 컴파일에 실패 :LCC : Typedef 열거 형의 전달 선언에 실패 했습니까?

typedef enum Foo Foo; 

// Other code here 

enum Foo { Bar = 1 }; 

그리고이 오류 제공 : 내 특정 경우

unknown enumeration 'Foo'

을 , 이것은 문제가되지 않았습니다. 나는 단지에 문을 결합 :

typedef enum Foo { Bar = 1 } Foo; 

을하지만 LCC 중 하나 "더 엄격한"(컴파일러는이 상황을 처리하기 위해 너무 바보) "더 바보"(일부 표준을 따르는) 또는 인 경우 궁금하네요 .

감사합니다. LCC: Initializing Structs Containing Structs?

답변

3

앞으로 열거의 선언이 아닌 표준 (그들은 C99 섹션 6.7.2.3을 위반 §3)하고 -pedantic 플래그를 추가하는 경우 GCC뿐만 아니라 경고합니다 (: 또한

, 내 다른 LCC의 질문을 참조하십시오 이식성있는 코드를 작성하는 경우 사용해야합니다).

이 이유는 int과 다른 정수 유형을 자유롭게 선택하여 열거 형을 나타내는 데 사용할 수 있기 때문입니다 (C99 섹션 6.7.2.2 §4 참조). 그러나 컴파일러가 제대로 작동하려면 적절한 유형을 선택하기 전에 표현해야하는 모든 값을 확인해야합니다.

+0

감사합니다. 그게 정확히 내가 찾고 있던 것입니다. 그리고'- 평화 '깃발을 지적 해 주셔서 감사합니다. – Steve

+0

열거 형의 @Christoph 전달 선언은 VC에서 허용됩니다. – onmyway133

관련 문제