2013-04-05 96 views
0

我在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是float阵列,并且所有其它的是整型数字。

但是,当我complie它,我得到了以下错误:

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]

+0

对此使用类似函数的宏是一个非常糟糕的主意。你所做的只是创建混淆和不安全的代码,没有收获。 – Lundin 2013-04-05 14:06:45

回答

1

从宏定义删除空格:

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

你的代码被定义称为NUM_FROM_DENSE_MAT一个参数的宏。