titulo longitud logistica etiqueta descripcion definicion crear como almacen c enums

longitud - Especificador de almacenamiento de clase inútil en declaración vacía



rfid logistica definicion (4)

gcc 4.4.1 c89

Tengo el siguiente código:

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

Y me sale una advertencia:

useless class storage specifier in empty declaration

Sin embargo, si elimino la palabra clave estática, no recibo esa advertencia.

Estoy compilando con las siguientes banderas:

-Wall -Wextra

Muchas gracias por las sugerencias,


¿Qué quieres que haga la estática? Sirve para dar variables definidas en la declaración de vinculación interna:

static enum states { ... } a;

Como atajo para

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

Dando un enlace interno "a". Pero como no define una variable en su código, es inútil de hecho (si no es ilegal).


Recibes el mensaje porque en realidad no estás declarando , solo estás definiendo algo, es decir, una enumeración llamada "estados". Más tarde puede usar esta definición para declarar una variable de ese tipo. Esa variable puede ser una variable estática o de instancia, pero la definición no necesita (y no debe tener) el especificador de almacenamiento adjunto.


Su declaración de enum está definiendo un tipo, pero no declara también un objeto de ese tipo.

static solo se aplica a variables y funciones, por lo que, como dice el compilador, es inútil en el contexto en el que lo tienes.


Tratar:

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

que en realidad crea una variable estática llamada avar. Sólo las variables pueden ser estáticas, no tipos.