2015-10-31 78 views
-2

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

#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];的宏吗?

+4

不能与C预处理。它不提供递归或迭代机制。不过,m4也许能够。为什么不使用这个功能? – Downvoter

回答

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); 
} 
+0

正是我在找的东西 – Mike32ab

-2

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

在蟒:

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

变量S将具有代码求和线。

+0

你可以给出这样的代码的例子,而不使用迭代...... – wrangler

+0

我会用一些python代码编辑答案。 –

+1

'n在范围内(1,4)'这不是循环? – wrangler