C宏功能错误

时间:2013-04-05 13:53:23

标签: c

我在c:

中定义了这样一个宏函数
#define NUM_FROM_DENSE_MAT (PTR, II, JJ, RROW) ((PTR[JJ * RROW + II]))

我打电话给以下人员:

/*io.h:141*/ float num = NUM_FROM_DENSE_MAT(p_mat->p_val_host, i, j, p_mat->row);

其中p_mat->p_val_host是一个浮点数组,其他所有数组都是int数。

但是当我对它进行编译时,我收到了以下错误:

io.h(141): error: identifier "PTR" is undefined

io.h(141): error: identifier "II" is undefined

io.h(141): error: identifier "JJ" is undefined

io.h(141): error: identifier "RROW" is undefined

是否应该转换为p_mat->p_val_host[j * p_mat->row + i]

1 个答案:

答案 0 :(得分:1)

从宏定义中删除空格:

#define NUM_FROM_DENSE_MAT(PTR, II, JJ, RROW) ((PTR[JJ * RROW + II]))
                         ^^

您的代码正在定义一个名为NUM_FROM_DENSE_MAT的无参数宏。