2015-10-31 100 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