我試圖讀取二維數組中的值並將它們相乘以生成新的數組數組。這並不完全重要。使用宏數組訪問的語法錯誤
我已經創建了一個宏來讀取值,而不是一個函數在理論上是更有效的,但我有一個語法錯誤,我無法弄清楚。問題的線是
// compute and write the value for the result array
writearr(result, n, r, c, (READ(r, c, A*) * READ(c, r, A*)));
與函數頭
void newarr(int n, int* A, int* result)
宏
#define READ(a, b, arr) (arr[a][b])
,當我嘗試編譯此我得到
gcc -Wall -O2 -c -o placeholder.o placeholder.c
placeholder.c: In function âwritearrâ:
placeholder.c:26: error: expected expression before â[â token
make: *** [placeholder.o] Error 1
,但我不能完全弄清楚什麼問題是。
「我創建了一個宏來讀取值而不是函數,理論上是更高效的」這就是你錯誤的地方。你爲什麼要爲理論優勢編碼?你應該編碼清潔和優雅。當你完成*你可以分析你的代碼,找出緩慢的部分,並修復它們。猜測是毫無價值的。 – GManNickG 2010-11-09 23:09:52
另外,只有給出開始和大小,您無法對其進行二維索引。你還需要一個寬度,所以你可以執行算術。查看弗拉德答案的評論。 – GManNickG 2010-11-09 23:13:47