static enum RetType
{
SET_SUCCESS=0,
SET_ET_ERROR = -1,
SET_CBL_ERROR = -2,
SET_SEN_ERROR = -3,
SET_TAR_ERROR = -4,
SET_ENG_ERROR = -5,
SET_IO_ERROR = -6
};
enum RetType ret = SET_SUCCESS;
Declaro una enumeración estática en global. Pero Visual Studio da una advertencia:
Advertencia C4091: 'static ': ignorado a la izquierda de 'RetType' cuando no se declara ninguna variable.
¿Por qué ignora "estático"?
2 respuestas
Debido a que es una definición de enumeración, no tiene sentido hacerlo static
. Probablemente quisiste hacer esto en su lugar:
typedef enum
{
SET_SUCCESS = 0,
SET_ET_ERROR = -1,
SET_CBL_ERROR = -2,
SET_SEN_ERROR = -3,
SET_TAR_ERROR = -4,
SET_ENG_ERROR = -5,
SET_IO_ERROR = -6,
} RetType;
...
static RetType ret = SET_SUCCESS;
Como se mencionó en otros, la estática solo se puede usar con variables (o funciones). Básicamente, la palabra clave "estática" se usa para declarar variables en secciones de datos de la memoria de proceso (y no en la pila). En su caso, está definiendo RetType globalmente como un tipo (y no como la variable o función). Por lo tanto, en su caso debe:
enum RetType
{
SET_SUCCESS=0,
SET_ET_ERROR = -1,
SET_CBL_ERROR = -2,
SET_SEN_ERROR = -3,
SET_TAR_ERROR = -4,
SET_ENG_ERROR = -5,
SET_IO_ERROR = -6
};
static enum RetType ret = SET_SUCCESS;
Si desea declarar ret
estáticamente.
Nuevas preguntas
c
C es un lenguaje de programación de uso general utilizado para la programación del sistema (SO e integrado), bibliotecas, juegos y multiplataforma. Esta etiqueta debe usarse con preguntas generales sobre el lenguaje C, como se define en el estándar ISO 9899 (la última versión, 9899: 2018, a menos que se especifique lo contrario; también etiquete las solicitudes específicas de la versión con c89, c99, c11, etc.). C es distinto de C ++ y no debe combinarse con la etiqueta C ++ en ausencia de una razón racional.