Joe*_*Joe 6 c++ arrays gnu g++ c++11
我有一些C需要转换为C++.
它做了这样的事情:
enum
{
ELEM0,
ELEM1,
ELEM2,
ELEM3,
ELEM4,
MAX_ELEMS
}
#define LEN 16
static const char lut[MAX_ELEMS][LEN] =
{
[ELEM2] = "Two",
[ELEM3] = "Three",
[ELEM1] = "One",
[ELEM4] = "Four",
[ELEM0] = "Zero"
}
Run Code Online (Sandbox Code Playgroud)
在实践中,我有数百个元素,在数组中没有任何顺序.我需要保证数组中的条目将枚举与适当的文本联系起来.
是否可以使用-std = gnu ++ 11中的位置参数初始化数组?
不。根据 gcc文档,GNU C++ 中不存在指定初始化程序。
在 ISO C99 中,您可以按任意顺序给出元素,指定它们适用的数组索引或结构字段名称,GNU C 也允许将其作为 C89 模式的扩展。此扩展未在 GNU C++ 中实现。
这没有解决你的问题吗(尽管它是运行时的):
static const std::map<int, std::string> lut =
{
std::make_pair(ELEM2, "Two"),
std::make_pair(ELEM3, "Three"),
std::make_pair(ELEM1, "One"),
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
196 次 |
| 最近记录: |