我使用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