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;

Je déclare une énumération statique dans global. Mais Visual Studio donne un avertissement:

avertissement C4091: 'statique': ignoré à gauche de 'RetType' lorsqu'aucune variable n'est déclarée.

Pourquoi ignore-t-il "statique"?

c
2
barbaros 3 nov. 2019 à 21:51

2 réponses

Parce que c'est une définition d'énumération, cela n'a pas de sens de le faire static. Vous vouliez probablement le faire à la place:

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 à 19:07

Comme d'autres l'ont mentionné, la statique ne peut être utilisée qu'avec des variables (ou des fonctions). Fondamentalement, le mot clé "statique" est utilisé pour déclarer des variables dans les sections de données de la mémoire de processus (et non sur la pile). Dans votre cas, vous définissez RetType globalement comme type (et non comme variable ou fonction). Par conséquent, dans votre cas, vous devez:

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 vous souhaitez déclarer statiquement ret.

0
R4444 3 nov. 2019 à 19:08