我想做的是调用这个函数...
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)]
任何帮助、评论和建议将不胜感激。谢谢。
最佳答案
不要手动内联。 Use the inline keyword或者更好,让编译器决定。
关于c - 用实际代码调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1515023/