C++ 作为返回类型存在的枚举关键字表示什么

C++ 作为返回类型存在的枚举关键字表示什么,c++,visual-studio,gcc,enums,C++,Visual Studio,Gcc,Enums,我目前正在处理一个庞大的代码库,我遇到了这个声明 static enum OPTION_FILE_NUM FileOption(const char *target); 现在我不确定这里显示的enum OPTION\u FILE返回类型是什么?我在整个代码库中搜索了OPTION\u FILE\u NUM类型,但在VisualStudio中找不到任何内容,代码编译得很好。现在,当我在mingwgcc中使用相同的代码时,我得到了以下错误 error: use of enum 'OPTION_FI

我目前正在处理一个庞大的代码库,我遇到了这个声明

static enum OPTION_FILE_NUM FileOption(const char *target);
现在我不确定这里显示的
enum OPTION\u FILE
返回类型是什么?我在整个代码库中搜索了
OPTION\u FILE\u NUM
类型,但在VisualStudio中找不到任何内容,代码编译得很好。现在,当我在mingwgcc中使用相同的代码时,我得到了以下错误

 error: use of enum 'OPTION_FILE_NUM' without previous declaration
我的问题是,上述声明表明了什么

它的确切含义是:

enum OPTION_FILE_NUM {elem1, elem2};

// function that returns OPTION_FILE_NUM
static enum OPTION_FILE_NUM FileOption(const char *target){} 

int main(){}

您正在声明一个返回类型为
enum OPTION\u FILE\u NUM
的函数。您应该在代码库中的某个地方,或者在您要包含的某个头中有定义。尝试使用IDE并使用“跳转到定义”选项,您将能够找到罪魁祸首。

Visual studio作为非标准扩展允许前向声明枚举(无大小信息)

因此,您将看到在这里使用该功能。它向前声明name
OPTION\u FILE\u NUM
的枚举,并表示函数返回它

由于扩展是非标准的,您的其他编译器会抱怨


或者在使用前注入适当的decl,或者如果C++11注入一个
enum选项\u FILE\u NUM:int如果我没记错的话,这就是msvc隐式做的。(有趣的是,msvc不支持大小的Enum forward decl,而只支持非大小的Enum forward decl,这与标准要求相反)。

只是想验证一下。看起来我可能需要查看外部库并对其进行grep。VisualStudio在这方面没有帮助,可以肯定的是,<代码> opthyFieleNuM< /Cux>不是标准的C++对象或关键字。所以它必须被定义在某个地方。谢谢你澄清这一点。-计时器清除后标记为应答单击OPTON_FILE_ENUM并选择“转到定义”Visual studio在这种情况下没有帮助