为什么忽略“静态”?

时间:2019-11-03 18:51:28

标签: c

 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;

我在global中声明了一个静态枚举。但是Visual Studio发出警告:

  

警告C4091:“静态”:未声明任何变量时,在“ RetType”左侧被忽略。

为什么它会忽略“静态”?

2 个答案:

答案 0 :(得分:2)

正如其他人所提到的,static只能与变量(或函数)一起使用。基本上,“ static”关键字用于在过程存储器的数据部分(而不是堆栈中)声明变量。就您而言,您正在将RetType全局定义为一种类型(而不是变量或函数)。因此,在这种情况下,您必须:

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;

如果您想静态声明ret。在这里,ret的类型为RetType,它位于.data节中。

答案 1 :(得分:0)

因为它是一个枚举定义,所以将其设为static没有任何意义。您可能打算这样做:

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;