什麼,我試圖做的就是把這個函數調用...函數調用與實際的代碼
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