2010-04-30 2 views
25

GCC 4.4.1 C89쓸모 급 스토리지 지정

나는 다음과 같은 코드가 있습니다

static enum states 
{ 
    ACTIVE, 
    RUNNING, 
    STOPPED, 
    IDLE 
}; 

을 그리고 경고 얻을 : 내가 제거하면, 그러나

useless class storage specifier in empty declaration 

을 정적 키워드 나는 그 경고를 얻지 않는다.

나는 다음과 같은 플래그로 컴파일 오전 : 어떤 제안에 대한

-Wall -Wextra 

많은 감사,

+3

'}'다음에';'가 있어서는 안됩니다 (관련이 없을 것 같아요.) –

+0

질문에 "not"가있는 것처럼 오류는 "쓸모가 없습니다" 당신이 당신의 질문 '신체'에서 가지고있는 것처럼. –

+0

@ Andreas - 고정되어 있습니다. 질문에서 입력 한 부분 만 수정했습니다. – ant2009

답변

22

당신은 메시지가 나타납니다. 나중에이 정의를 사용하여 해당 유형의 변수를 선언 할 수 있습니다. 이 변수는 정적 변수 또는 인스턴스 변수 일 수 있지만 정의에는 변수에 첨부 된 저장 지정자가 필요하지 않습니다.

5

당신이 정적 어떻게할까요? 이 선언 내부 링크에 정의 된 변수를 제공하는 역할도 : 단축키로

static enum states { ... } a; 

을 "A"내부 링크주기

enum states { ... }; 
static enum states a; 

대한. 그러나 코드에 변수를 정의하지 않았으므로 사실은 (불법이 아니라면) 쓸모가 없습니다.

4

시도 :

실제로 바르라는 정적 변수를 생성
static enum states 
{ 
    ACTIVE, 
    RUNNING, 
    STOPPED, 
    IDLE 
} avar; 

. 변수 만 정적 일 수 있고 유형이 될 수는 없습니다.

12

enum 선언은 유형을 정의하지만 해당 유형의 객체도 선언하지 않습니다.

static은 변수와 함수에만 적용되므로 컴파일러에서 말한 것처럼 사용자가 가지고있는 상황에서는 쓸모가 없습니다. 당신이 실제로하지 않은 선언 만 뭔가 "상태"라는, 즉 열거를 정의하고 있기 때문에