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.