gpt4 book ai didi

c - 避免 C 中的样板语法 sizeof(x)/sizeof(x[0])

转载 作者:行者123 更新时间:2023-12-04 09:41:34 25 4
gpt4 key购买 nike

我经常这样写:

for (size_t i = 0; i < sizeof(some_variable) / sizeof(some_variable[0]); i++) {
// ...
}

从这里question我还可以编写一个 MACRO,例如:

#define ArrayLength(x) (sizeof(x)/sizeof(x[0]))

但是我觉得这并不是一个很好的解决方案,可以在宏下混淆这个非常简单的东西。

是否有 C99 或 C11 定义的更好的替代方案?

由于这种样板语法,我经常发现我的同事硬编码变量的大小或更糟,使用这样的 define:

#define ELEMENTS 23
int foo[ELEMENTS];
for (size_t i; i < ELEMENTS; i++);

最佳答案

最好的做法是为数组中的元素数量维护一个单独参数。

然后,当您将代码移入函数 时,由于指针衰减而潜入的所有错误将不再发生。

如果做不到这一点,请始终拼出 sizeof 惯用语。

关于c - 避免 C 中的样板语法 sizeof(x)/sizeof(x[0]),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42761977/

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