prosource

빈 선언에 있는 쓸모없는 클래스 저장 지정자

probook 2023. 9. 15. 21:07
반응형

빈 선언에 있는 쓸모없는 클래스 저장 지정자

gcc 4.4.1 c89

다음 코드가 있습니다.

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

그리고 경고를 받습니다.

useless class storage specifier in empty declaration

하지만 정적 키워드를 제거하면 해당 경고를 받지 않습니다.

저는 다음과 같은 플래그를 사용하여 컴파일하고 있습니다.

-Wall -Wextra

어떤 제안이든 감사히 받겠습니다

실제로 선언하는 것이 아니라 무언가를 정의하는 것, 즉 "상태"라는 이름의 열거형을 정의하는 것이기 때문에 메시지를 받는 것입니다.나중에 이 정의를 사용하여 해당 유형의 변수를 선언할 수 있습니다.해당 변수는 정적 변수 또는 인스턴스 변수일 수 있지만, 정의에 스토리지 지정자가 연결되어 있을 필요는 없으며 따라서도 안 됩니다.

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

static오직 변수와 함수에만 적용되므로 컴파일러가 말하는 것처럼, 당신이 그것을 가지고 있는 상황에서는 쓸모가 없습니다.

정전기가 어떻게 했으면 좋겠습니까?여기서 선언 내부 연결에 정의된 변수를 제공하는 역할을 합니다.

static enum states { ... } a;

을 위한 지름길로

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

"a" 내부 연결을 제공합니다.그러나 코드에 변수를 정의하지 않기 때문에 실제로는 (불법이 아니라면) 아무 소용이 없습니다.

시도:

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

실제로 var라는 정적 변수를 생성합니다.변수만 정적일 수 있고 유형은 사용할 수 없습니다.

언급URL : https://stackoverflow.com/questions/2743949/useless-class-storage-specifier-in-empty-declaration

반응형