gpt4 book ai didi

c++ - 在 C++ 中初始化静态常量数组的特定元素

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:40:59 27 4
gpt4 key购买 nike

我有一些 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 中使用像这样的位置参数来初始化数组?

最佳答案

没有。根据 gcc documentation , Designated Initializers 在 GNU C++ 中不存在。

In ISO C99 you can give the elements in any order, specifying the array indices or structure field names they apply to, and GNU C allows this as an extension in C89 mode as well. This extension is not implemented in 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"),
};

关于c++ - 在 C++ 中初始化静态常量数组的特定元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19661912/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com