什么,我试图做的就是把这个函数调用...函数调用与实际的代码
assign_sum_to_pixel(¤t_pixel, sum);
,并用它调用的是这个实际的代码替换它...
/*
* assign_ sum_ to_ pixel - Computes averaged pixel value in current_pixel
*/
static void assign_ sum_ to_ pixel (pixel *current_ pixel, pixel_ sum sum)
{
current_ pixel->red = (unsigned short) (sum.red/sum.num);
current_ pixel->green = (unsigned short) (sum.green/sum.num);
current_ pixel->blue = (unsigned short) (sum.blue/sum.num);
return;
}
我想出什么样的主意是这样的......
/*
* mysmooth1 - my smooth1
*/
char mysmooth1_descr[] = "my smooth1: My smooth1";
void mysmooth1(int dim, pixel *src, pixel *dst)
{
int i, j;
int ii, jj;
pixel_ sum sum;
pixel current_ pixel;
for (i = 0; i < dim; i++)
for (j = 0; j < dim; j++)
{
initialize_ pixel_ sum (&sum);
for(ii = max(i-1, 0); ii <= min(i+1, dim-1); ii++)
for(jj = max(j-1, 0); jj <= min(j+1, dim-1); jj++)
accumulate_ sum(&sum, src[RIDX(ii, jj, dim)]);
{
***current_ pixel->red = (unsigned short) (sum.red/sum.num);
current_ pixel->green = (unsigned short) (sum.green/sum.num);
current_ pixel->blue = (unsigned short) (sum.blue/sum.num);***
***(These three lines above are the lines I inserted which is where the function call use to be)***
dst[RIDX(i, j, dim)] = return;
}
}
}
但...由于某种原因,当我运行的代码失败工作给我这个错误
kernels.c:456: error: invalid type argument of â->â
kernels.c:457: error: invalid type argument of â->â
kernels.c:458: error: invalid type argument of â->â
kernels.c:459: warning: statement with no effect
这是正确的,我添加了新的代码...
current_ pixel->red = (unsigned short) (sum.red/sum.num);
current_ pixel->green = (unsigned short) (sum.green/sum.num);
current_ pixel->blue = (unsigned short) (sum.blue/sum.num);
可有人告诉我,如果我做错了什么......上午我在某处丢失括号?我没有正确初始化我的变量吗?是返回不应该在底部等于dst[RIDX(i, j, dim)]
任何帮助,意见,建议将不胜感激。谢谢。
你为什么试图手动内联?保持函数独立,更清晰,并且如果确定它会有好处,编译器会将它内联。它会知道比你或我更好。 – GManNickG 2009-10-03 22:31:59
另外,你在变量,函数名等等中有一堆空格......这些实际存在于你的代码中吗? – GManNickG 2009-10-03 22:37:03
更不用说错误消息中有非ascii字符... – bdonlan 2009-10-03 22:42:15