gpt4 book ai didi

c - 如何在C中执行循环宏

转载 作者:行者123 更新时间:2023-11-30 15:28:41 27 4
gpt4 key购买 nike

我定义了一些宏,例如

#define NUM_A 3
#define A1 10
#define A2 100
#define A3 8

总计数和值特定于设备。现在我需要一个看起来像这样的数组

int Array[NUM_A]={A1, A2, A3};

现在,如果总数 NUM_A 变为 4,并且我定义了宏 A4,但我忘记将 A4 附加到数组中。实际的数组将是 {A1, A2, A3, 0}。编译时不会出错。运行程序时也很难发现错误。当我在头文件中编写宏并在源文件中声明数组时,更有可能发生这种情况。我可以编写一个循环宏来通过定义的宏 NUM_A、A1、A2 和 A3 生成数组吗?或者如果编译或运行时出现错误,我可以写一个断言或其他东西来警告自己吗?

最佳答案

只是一个问题/建议。

您真的需要“NUM_A”吗?至少从代码片段的角度来看,这不是必需的。不确定您是否在其他地方将其用于其他目的。

您可以将数组声明为:

int Array[] = {A1, A2, A3}; /* So this becomes the only place to be modified, just add A4 in the future. No confusion with array size */

NUM_A 相当于“数组大小/数组大小[0]”。

示例:

  int arr[] = {A1, A2, A3};
int i;

for(i = 0; i < sizeof arr / sizeof arr[0]; i++)
{
printf("%d\n", arr[i]);
}

关于c - 如何在C中执行循环宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26487850/

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