我有SCANDIR(有問題):該手冊頁包含此爲原型:聯機幫助SCANDIR()的原型古怪
int scandir(const char *dir, struct dirent ***namelist,
int (*filter)(const struct dirent *),
int (*compar)(const struct dirent **, const struct dirent **));
所以我有這樣的:
static inline int
RubyCompare(const struct dirent **a,
const struct dirent **b)
{
return(strcmp((*a)->d_name, (*b)->d_name));
}
而這裏的呼叫:
num = scandir(buf, &entries, NULL, RubyCompare);
最後編譯器說這個:
warning: passing argument 4 of ‘scandir’ from incompatible pointer type
編譯器是GCC-4.3.2,我的CFLAGS是以下幾點:
-Wall -Wpointer-arith -Wstrict-prototypes -Wunused -Wshadow -std=gnu99
這是什麼警告的含義是什麼? RubyCompare的聲明對我來說看起來是正確的,並且警告代碼完全工作。
好吧好吧,我寫我自己的版本,因爲manpage對alphasort()的可移植性也有誤導作用。用alphasort()它的作品,很有趣,我從來沒有嘗試過。 ;) – unexist 2008-09-28 18:18:23
這樣做會給我一個警告,因爲它拋棄了void參數中的const限定符。有沒有解決的辦法? – TartanLlama 2011-04-21 12:37:30