gcc 4.4.1 c89
我有以下代码:
static enum states
{
ACTIVE,
RUNNING,
STOPPED,
IDLE
};
Run Code Online (Sandbox Code Playgroud)
我收到警告:
useless class storage specifier in empty declaration
Run Code Online (Sandbox Code Playgroud)
但是,如果我删除静态关键字,我不会收到该警告.
我正在使用以下标志进行编译:
-Wall -Wextra
Run Code Online (Sandbox Code Playgroud)
非常感谢任何建议,
tva*_*son 26
你得到的消息是因为你实际上没有声明,你只是定义了一些东西,即一个名为"states"的枚举.您可以稍后使用此定义来声明该类型的变量.该变量可以是静态变量或实例变量,但该定义不需要(也不应该)附加到它的存储说明符.
你想要静态做什么?它服务于那里给出声明内部链接中定义的变量:
static enum states { ... } a;
Run Code Online (Sandbox Code Playgroud)
作为捷径
enum states { ... };
static enum states a;
Run Code Online (Sandbox Code Playgroud)
给予"一个"内部联系.但是,由于您没有在代码中定义变量,实际上它是无用的(如果不是非法的).
小智 6
尝试:
static enum states
{
ACTIVE,
RUNNING,
STOPPED,
IDLE
} avar;
Run Code Online (Sandbox Code Playgroud)
它实际上创建了一个名为avar的静态变量.只有变量可以是静态的,而不是类型.