c - basename() 返回 int?

标签 c

可能是我遗漏了一些愚蠢的东西,但是,为什么我会收到此警告?

static void foo(char *path) {
    char *bname;
    char *path2 = strdup(path);
    bname = basename(path2);

(带有 basename() 调用的行):警告:赋值从没有转换的整数生成指针

确实,如果我改成这个,警告就会消失:

    bname = (char *)basename(path2);

man 3 basename 告诉我:

char *basename(char *path);

Both dirname() and basename() return pointers to null-terminated strings.

什么给了?

最佳答案

否定的。它适合我。您确定包含了正确的 header 吗?

#include <string.h>
#include <libgen.h>

static void foo(char *path) {
    char *bname;
    char *path2 = strdup(path);
    bname = basename(path2);
}

你能告诉我们更多关于你的编译环境吗?

关于c - basename() 返回 int?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2793285/

相关文章:

c - 如何在 Linux pthreads 中设置线程的名称?

CreateFile 总是覆盖指定的文件

c++ - 用 Alpha 保存 OpenGL 输出?

c++ - 保存结果时按分隔符拆分 char 数组?

c++ - gcc的glibc特定功能

Java 类到 C 结构

c++ - 使用 C 进行套接字编程时无法接收或发送整个数据包

c - 对文件系统的性能进行基准测试

c - 随机数功能失灵

c - 字符串 - 名字和姓氏按字母顺序排列,大写字母