枚举类型和C 中的用法
ENUM types and usage in c and c++
如果我写的话:
typedef enum {
foo_1,
foo_2
}foo ;
我发现我可以使用
int footype = foo::foo_1
in C
我可以直接使用
int footype = foo_1
在C,
那么,是否有一种方法可以编写在C 和C中同时使用的代码?该代码仅在一个标头文件中,只有一个结构。
int footype = foo_1;
将在C和C 中编译。
int footype = foo::foo_1;
此语法仅对于C 11的强烈键入所需。
这个
int footype = foo::foo_1
仅在C 11中合法。在C 03中,枚举不是范围,这是非法的,就像在C中一样。在C 11中,有两种类型的枚举 - 普通的C样枚举和范围的枚举,并用
声明 enum class
对于后者,枚举者资格(::
)是强制性的。对于前者 - 可选。
所以,简单地使用
int footype foo = foo_1;
将在所有C,C 03和C 11
如果您可以丢弃Typedef,则应该"工作"
enum {
foo_1,
foo_2
};
int
main(void)
{
int foo = foo_1;
return 0;
}
使用GCC和G
为我编译g++ --std=c++03 enum.cc -o enum_cpp
gcc --std=c99 enum.c -o enum_c
相关文章:
- ArduinoJson 6.15.2:JsonObject没有命名类型
- 防止主数据类型C++的隐式转换
- 大量序列中核苷酸类型的快速计数
- 类作用域的类型别名"using":[何时]方法中的用法可以先于类型别名?
- C++:类类型引用运算符=用法
- 错误:'int_type'未命名类型 - 如何继承 typedefs 和用法
- 模板参数子类型的用法(高级情况)
- 将 PIMPL 习惯用法与成员函数模板一起使用(无需预先了解所有可能的数据类型)
- 访问基类型数组成员(Int-to-type习惯用法)
- 指向成员非类型模板参数的指针的实际用法
- 枚举类型和C 中的用法
- 模板中的类型名 U = equal_to<T>是什么意思?STL<T> equal_to用法
- C:x86 英特尔内在函数对 _mm_log2_ps() -> 错误的用法:不兼容的类型"int"?
- 使用检测习惯用法来确定类型是否具有具有特定签名的构造函数
- C++ 统计分布类型的模板用法
- C++ get 和类型转换之间的用法有什么区别?我应该使用哪一个?
- std::initializer_list的泛型类型用法
- 修改SFINAE习惯用法,使用std::is_athmetic检查函数的返回类型
- 类型不完整:定义前的类用法与前向声明
- 私有类型定义的公共用法是可移植的