gpt4 book ai didi

c++ - 如何强制具有与数组大小相同数量的项目的数组初始化程序?

转载 作者:行者123 更新时间:2023-12-02 10:22:40 24 4
gpt4 key购买 nike

我最近发现了这个错误:

enum class MyEnum
{
Enum1,
Enum2,
Enum3,
Count
};
const char* names[MyEnum::Count] =
{
"Enum1",
"Enum2",
};

static_assert(sizeof_array(names) == MyEnum::Count, "Name count mismatch");

除非您将 static_assert更改为 names[MyEnum::Count],否则此处的 names[]永远不会 断言,否则我会这么做。

有没有一种方法可以强制或检测具有显式大小的数组和初始化程序是否实际上初始化了整个数组,以防止此类错误?

最佳答案

添加一些凌乱的代码以检查此错误将防止该错误再次出现在同一位置,但不会阻止其他地方出现类似的错误。
如果这是您想要的,请考虑添加一个很好的注释:

// `names[]` is correct, changing it to `names[X]` is a mistake, refer to #123.
const char* names[] = { /* ... */ };

如果在许多地方都有类似的代码,请考虑编写自定义的clang整洁检查。

我自己从未写过自定义的clang整洁检查,但这似乎是可行的,并且听起来像是一个不错的长期解决方案。

关于c++ - 如何强制具有与数组大小相同数量的项目的数组初始化程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59418508/

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