我使用libgen.h中的dirname從文件名路徑中獲取目錄路徑。UNIX C - 編譯64位中斷「dirname」
這是它的簽名:
char * dirname (char *path)
當在32位機器上編譯或使用-m32用gcc,這一切工作正常。
我的代碼如下所示:
char* path = "/path/to/my/file.txt";
char* path_cpy = strdup(path);
const char* dir = (const char*)dirname(path_cpy);
如果我編譯一個64位的機器上,我得到警告:
"warning: cast to pointer from integer of different size"
這將解決這一警告,但崩潰在運行時:
const char* dir = (const char*)(uintptr_t)dirname(path_cpy);
我從來沒有試過爲32/64位交叉編譯之前,有沒有辦法解決這個問題?
你是對的,這解決了我的問題。我明白爲什麼它會突破64位。 – jonathanpeppers 2010-10-29 17:02:39
我沒有得到的是爲什麼你沒有,在你的comile輸出中的某處,像'未定義的引用dirname()'? – Gui13 2012-12-16 10:37:35