2012-04-07 3 views
1

나는이 (GCC 컴파일러를) 컴파일 :지정자 한정자 목록이 필요한 이유가 무엇입니까?

#include <stdio.h> 

main() { 

    struct { 
     a:1; 
     b:2; 
    } t; 

    t.b=6; 
    t.a=2; 
    printf("%d %d",t.a,t.b); 
} 

오류는 표시 : 이전

예상 지정-규정 목록을 'A'

왜 이름이 데이터 변수가 int로서 촬영 때 필요 기본적으로. 설명해주십시오 ...

+0

"이름이없는 데이터 변수는 기본적으로 int로 간주됩니다.": 매우 오래된 버전의 C를 염두에두고있는 것처럼 보입니다. '-Wall'을 사용하여 프로그램을 컴파일한다면'main'의 "통상적이지 않은"선언에 대한 경고를 받아야합니다. –

+0

코드에 대한 더 많은 의견 :'main()'은'int main (void)'이어야합니다; 비트 필드는 일반적으로'unsigned'로 선언되어야합니다; 't.b'와't.a '에 할당하는 값은 반드시 가질 수있는 값의 범위 밖에 있습니다. –

답변

1

이것은 C language standard에서 필요합니다. 섹션 6.7.2.1 부 (4)에 의한 정의 : 비트 - 인터넷 ELD는 QUALI 인터넷 ED 또는 _Bool의 unquali 인터넷 초안 버전 인 형태를 가진다

, INT 부호 INT, 또는 몇몇 다른 구현 드 인터넷 NED 형 서명.

관련 문제