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"?

c
2
barbaros 3 nov. 2019 a las 21:51

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;
0
Lundin 3 nov. 2019 a las 19:07

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.

0
R4444 3 nov. 2019 a las 19:08