gpt4 book ai didi

c++ - 对数组值的 static_assert

转载 作者:行者123 更新时间:2023-11-30 05:35:05 30 4
gpt4 key购买 nike

是否可以对数组值进行编译时检查?

例子:

typedef enum
{
dummy0 = 0,
dummy1,
dummy2
} eDummyEnum;

typedef struct
{
eDummyEnum name;
int value;
} sDummyStruct;

const sDummyStruct array[]=
{
{dummy0, 3},
{dummy1, 5},
{dummy2, 6}
}

是否有可能在编译时检查 array[dummy1].name == dummy1 是否存在?

最佳答案

也许是这样的:

constexpr sDummyStruct array[]=
{
{dummy0, 3},
{dummy1, 5},
{dummy2, 6}
};

constexpr bool checkArray(int index) {
return (index >= sizeof(array)/sizeof(array[0])) ||
(array[index].name == index && checkArray(index + 1));
}

static_assert(checkArray(0), "bad array");

Live demo

关于c++ - 对数组值的 static_assert,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33986365/

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