用Macro来定义矩阵

2020-06-11  本文已影响0人  半夜清风

2020/6/10
C语言里函数参数只能用指针来表示一维数组,对于二维或多维数组可以通过Macro来实现,使代码简洁易懂。例如:

#define A(i, j)   pA[ i*n + j ]

void testMat()
{
double pA = {1, 2, 3, 4, 5, 6};

//n: Number of columns
n = 2;

//Change cell(3, 2)
A( 2, 1) = 2;
}

但是我今天使用时出错,花了很长时间才找出原因。

int i = 1;
A( i+1, j ) = 2; //Wrong expression

调用Macro时,如果使用表达式赋值参数时,必须把表达式括起来。正确用法如下:

int i = 1;
A( i+1, j ) = 2;

如果不加括号,Macro会被解析为:

i + 1*n + j

而不是:

(i + 1)*n + j
上一篇 下一篇

猜你喜欢

热点阅读