gpt4 book ai didi

c++ - 验证C中数组的大小

转载 作者:太空宇宙 更新时间:2023-11-04 05:24:59 25 4
gpt4 key购买 nike

我面临一个关于在 C 中验证数组大小的问题。

We have one .h file, which contains the constant value like
A 1
B 2
C 3
...
...
END 10

最后一个元素是 END。每当添加任何新常量时,都应增加 END 的值。例如如果一些添加了值为 10 的新常量调用 F,那么他们必须将 END 的值从 10 增加到 11。

现在,在 .c 文件中我们有一个大小为 END 的数组。 .h 文件中定义的每个常量都应在此数组中有条目,即

abc[END] = {
1,
2,
1,
0,
...
...
}

现在,我们必须添加一个测试来检查,如果任何人在 .h 文件中添加新条目并且他们没有在 abc[] 数组中添加相应的条目,那么测试应该失败。之前我写了下面一段代码来验证:

return (sizeof(tbl2schema)/sizeof(int) == END) ? TRUE : FALSE;

但我认为,这段代码并没有达到目的。希望,我已经解释了我的问题。

任何人都可以就此向我提出建议,如何进行此检查。我必须添加一个检查,如果有人在 .h 文件中添加条目,那么他们必须在 abc[] 数组中添加条目。

最佳答案

您的公式不起作用的原因是您明确指定了 END 作为大小。从声明中删除它,使 abc 数组的大小随着常量的数量而变化:

int abc[] = {
// ^^
1,
2,
1,
0,
...
...
};

如果有人在更新 END 后忘记添加常量,abc 的大小将不匹配。

使用static_assert检查条件:

static_assert(sizeof(tbl2schema)/sizeof(int) == END, "abc size does not match.");

关于c++ - 验证C中数组的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33568168/

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