是否有可能寫一個預處理宏使得將改變的可變數量的參數爲連續的函數調用,如C近拍膨脹成多個函數調用
MAP(f, 1, 2, 3, ..., n)
成
f(1); f(2); f(3); ... f(n);
所以遠,我有以下,這似乎工作:
#define MAP(f, t, ...) \
{\
t __varlist[] = {__VA_ARGS__};\
for(int i = 0; i < sizeof(__varlist)/sizeof(t); i++)\
f(__varlist[i]);\
}
請注意,這個宏tak es是一個類型參數,以便它可以更有用。
有沒有辦法做到這一點沒有申報臨時?或者沒有關係,因爲編譯器非常聰明,能夠計算出所有內容?我有點新C.
如果沒有辦法做到這一點的一個通行證就需要多個預處理器傳遞。 http://en.wikipedia.org/wiki/M4_(computer_language) –
@JohnSmith如果你產生更多的混亂,這顯然是可能的...;) – Gleno
這對我來說並不明顯,因爲我不知道關於預定義的一切,處理器,因此如果限定符。看起來兩種方式都會造成合理的混亂:P –