2013-10-08 20 views
1

問題。 我得到了一個數組上的代碼計算。我即將定義一個宏,用函數調用替換每個數組讀取。下面是一個例子:使用define宏來超載數組訪問

對於這個代碼:

sum += a[i]; 

微應生成:

sum += function_call(a,i); 

當前的解決方案。 我發現我可以a(i)替代a[i]和使用下面的宏:

#define a(i) function_call(a,i) 

不過,我寧願不修改原代碼。我只想添加宏。

問題。我可以用聰明的宏定義來實現嗎?任何想法是高度讚賞。

注意:我必須使用C語法。

回答

2

不,C預處理器不會做操作符重載,無論你多聰明。

輸入中的[]字符不在括號內,因此它們不是宏參數的一部分,它們也不是字母數字字符,因此它們不是宏名稱的一部分。任何不是宏名稱或宏參數的東西都將由預處理器傳遞。預處理器甚至不知道'['']'是匹配的對。