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”左侧被忽略。
为什么它会忽略“静态”?
答案 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;