作为返回类型的枚举关键字的存在表明什么
what does the presence of an enum keyword as a return type indicate
>我目前正在使用一个巨大的代码库,我遇到了这个语句
static enum OPTION_FILE_NUM FileOption(const char *target);
现在我不确定enum OPTION_FILE
返回类型在这里表示什么?我在整个代码库中搜索了OPTION_FILE_NUM
类型,但我找不到任何东西,但代码在Visual Studio中编译良好。现在,当我在Mingw GCC中使用相同的代码时,出现以下错误。
error: use of enum 'OPTION_FILE_NUM' without previous declaration
我的问题是上述陈述表明了什么?
Visual studio作为非标准扩展允许枚举的前向声明(没有大小信息)。
因此,您会看到此处使用了该功能。 它转发声明名称OPTION_FILE_NUM
的枚举,并说函数返回它。
由于扩展是非标准的,因此您的其他编译器会抱怨。
要么在使用前注入正确的 decl,要么如果 C++11 注入enum OPTION_FILE_NUM:int;
如果我没记错的话,这就是 msvc 隐式的作用。 (有趣的是,MSVC 不支持大小的枚举前向 DECL,而只支持未调整大小的枚举,这与标准要求相反)。
它的意思正是这样:
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_FILE_NUM
的函数。您应该在代码库中的某个位置或要包含的某个标头中具有定义。尝试使用 IDE 并使用"跳转到定义"选项,您将能够找到罪魁祸首。
相关文章:
- 查找不存在的键时,unordered_map返回什么
- 存在内存访问异常,但我不确定我的代码中出了什么问题
- 我的计划中存在什么问题?为什么无法显示最终输出
- 检查是否存在多维映射的元素的最快方法是什么
- 如何从C 中的HDF5文件中读取属性名称和数据集名称,在这里我不知道HDF5文件中存在什么属性
- 是否存在链接类问题?我不知道发生了什么事
- 相对于一元算术运算符+,C和C++之间存在差异的原因是什么
- 什么是最快检查字符串数组中是否存在字符串的方法
- 有人能解释一下最多一次不变和存在、所有权和守恒规则是什么吗?
- boost ::线程在删除可加入线程时存在什么问题
- 作为返回类型的枚举关键字的存在表明什么
- 我应该使用什么函数签名来返回对可能不存在的对象的引用
- 连续内存在C++中的含义是什么
- 模板参数中 & 的存在是什么意思const_cast
- 什么设计模式将数据部分保存在持久存储 (SQL) 中,部分保存在 RAM(内存)中
- 解码像 FAST 这样的数据协议的快速方法是什么,其中数据以字节为单位编码,并将位作为存在标志
- 链接器错误LNK2001在 DLL 中的 WINAPI 函数上,存在标头和库,我缺少什么
- C中的C++ '*&'相当于什么?它甚至存在吗?
- 如果我在键不存在的情况下读取地图的值,会发生什么情况?
- 我的iOS金属计算内核是否存在编译器错误,或者我遗漏了什么