我有一些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"
}
在实践中,我有数百个元素,数组中没有任何顺序。我需要保证数组中的条目将枚举与适当的文本联系起来。
是否可以使用-std = gnu ++ 11中的位置参数初始化数组?
答案 0 :(得分:3)
没有。每个gcc documentation,指定的初始值设定项在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"),
};