首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么“静态”被忽略?

为什么“静态”被忽略?
EN

Stack Overflow用户
提问于 2019-11-03 18:51:28
回答 2查看 1.8K关注 0票数 2
代码语言:javascript
运行
复制
 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;

我宣布一个全局静态枚举。但是Visual给出了警告:

警告C4091:‘静态':当没有声明变量时,在'RetType’左侧忽略。

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

EN

回答 2

Stack Overflow用户

发布于 2019-11-03 19:08:28

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

代码语言:javascript
运行
复制
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的话。在这里,retRetType类型的,它存在于.data部分中。

票数 3
EN

Stack Overflow用户

发布于 2019-11-03 19:07:12

因为它是一个枚举定义,所以让它成为static是没有意义的。你可能打算这样做:

代码语言:javascript
运行
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58683535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档