宏添加数组的所有元素?

时间:2015-10-31 18:03:26

标签: c

如何定义一个宏来添加数组的所有元素而不使用循环?

#include <stdio.h>

int main()
{
    int list[4] = {4, 8, 32, 42};
    int total;

    total = list[0] + list[1] + list[2] + list[3];

    printf("%d\n", total);
    return 0;
}

您可以定义一个与此total = list[0] + list[1] + list[2] + list[3];类似的宏吗?

2 个答案:

答案 0 :(得分:0)

只有可能的宏才能在不使用任何循环的情况下添加数组元素:

#include <stdio.h>

#define add(arr)\
    arr[1] + arr[2]+ arr[3] + arr[4];

int main(void)
{
    int list[4] = {4, 8, 32, 42};
    int total = add(list);
    printf("%d\n", total);
}

答案 1 :(得分:-2)

预处理宏不会为您进行任何迭代。你可以编写一个python脚本或一个bash脚本来产生你想要的效果。

在python中:

s="total = list[0]"
for n in range(1,4):
    s+=" + list[%s]"%(n)
s+=";"

变量s将具有代码的总和。