2012-10-12 14 views
1

我的宏不适合在屏幕上很好地滚动,所以我想分解它,所以它很好地阅读。它工作正常,如果它看起来像这样:#define头部错误消息,当试图使代码看起来很干净

#define longMacro(ptr, idx0, idx1, idx2, idx3, idx4, dim1, dim2, dim3, dim4) (*((ptr) + (idx0) * (dim1) * (dim2) * (dim3) * (dim4) + (idx1) * (dim2) * (dim3) * (dim4) + (idx2) * (dim3) * (dim4) + (idx3) * (dim4) + (idx4))) 

但是当我试图打破它是这样的:

#define longMacro(ptr, idx0, idx1, idx2, idx3, idx4, dim1, dim2, dim3, dim4) 
    (*((ptr) + (idx0) * (dim1) * (dim2) * (dim3) * (dim4) 
    + (idx1) * (dim2) * (dim3) * (dim4) + (idx2) * (dim3) * (dim4) 
    + (idx3) * (dim4) + (idx4))) 

我得到这些错误

error: expected `)' before ‘+’ token
error: expected `)' before ‘+’ token
error: expected `)' before ‘+’ token
error: expected `)' before ‘+’ token

回答

2

我想你在每行结束前缺少“\”

#define longMacro(ptr, idx0, idx1, idx2, idx3, idx4, dim1, dim2, dim3, dim4) \ 
    (*((ptr) + (idx0) * (dim1) * (dim2) * (dim3) * (dim4) \ 
    + (idx1) * (dim2) * (dim3) * (dim4) + (idx2) * (dim3) * (dim4) \ 
    + (idx3) * (dim4) + (idx4)))