C++11 ';枚举结构';韩元';除非<;iostream>;包括在内
我有包含这行代码C++11 ';枚举结构';韩元';除非<;iostream>;包括在内,c++11,struct,enums,include,enum-class,C++11,Struct,Enums,Include,Enum Class,我有包含这行代码 enum struct cols: int8_t {red, blue, green}; 编译此文件时,会出现以下错误: test.cpp:4:1: warning: elaborated-type-specifier for a scoped enum must not use the 'struct' keyword enum struct cols: int8_t {red, blue, green}; ^ test.cpp:4:13: error: use of
enum struct cols: int8_t {red, blue, green};
编译此文件时,会出现以下错误:
test.cpp:4:1: warning: elaborated-type-specifier for a scoped enum must not use the 'struct' keyword
enum struct cols: int8_t {red, blue, green};
^
test.cpp:4:13: error: use of enum 'cols' without previous declaration
enum struct cols: int8_t {red, blue, green};
^
test.cpp:4:17: error: expected unqualified-id before ':' token
enum struct cols: int8_t {red, blue, green};
^
但是如果我把线
#include <iostream>
#包括
在顶部,它毫无怨言地编译
对此有何解释
(我使用的是g++4.9.4,但这种行为也在g++5.4.0中显示。)
std::int8\t
不是内置类型。与所有其他精确宽度类型一样,它是内置类型的可选typedef,仅当您的系统具有该宽度的适当类型时才出现。此类型和其他可用的std::[u]int*\u t
类型在
中定义。因此,您需要#包括
如上所述,您还应该指定std::
名称空间限定符,因为
标题中的stdlib符号不需要在全局名称空间中可用
大概
以前是通过某种途径间接包括
,但你不应该依赖于此;您应该为使用的每个库符号包含正确的标题
然后,关于struct
的问题是另一个主要问题,即未知的底层类型,所引起的麻烦;看,我现在看,这几乎是你问题的完全重复