我正在使用 libgen.h 中的 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 位,有没有办法解决这个问题?