2013-10-04 37 views
3

所以我正在瀏覽非官方OpenGL庫的glimg部分,並發現了一些我覺得很奇怪的東西。在其中一個函數中,指針參數被分配給自己,我看不出如何完成任何事情。這是否以某種方式強制內存進入緩存或是其他東西?可能是一個錯誤?分配給自己:優化還是外部?

static uint8 *resample_row_generic(uint8 *out, uint8 *in_near, uint8 *in_far, int w, int hs) 
{ 
    // resample with nearest-neighbor 
    int i,j; 
    in_far = in_far; // <-- here? 
    for (i=0; i < w; ++i) 
     for (j=0; j < hs; ++j) 
     out[i*hs+j] = in_near[i]; 
    return out; 
} 
+4

這可能只是沉默未使用的參數警告。 – Cairnarvon

+4

沒有聲明'x = x';一些編譯器會警告未使用的變量,根據一些編碼慣例這可能是錯誤的。然而,這是另一種錯誤(左值未使用),根據代碼分析工具中的其他規則。一個更好的工作方式是'(void)變量;' –

回答

8

這是爲了抑制在參數in_far未在函數中使用的警告。

另一種方式來抑制警告:

(void)in_far; 
+0

你不能忽略這個名字嗎? – aaronman

+1

@aaronman一些編譯器可能會爲未使用的參數生成警告。 –

+0

@aaronman是的。但這是一個古老的技巧,它早於未命名的參數。習慣很難死。 – Gene