basename()返回int?

时间:2010-05-08 07:34:57

标签: c

可能有些愚蠢我不知道但是,为什么我会收到这个警告?

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

(带有basename()调用的行):warning:赋值来自整数而没有强制转换的指针

事实上,如果我改变这一点,警告就会消失:

    bname = (char *)basename(path2);

man 3 basename告诉我:

char *basename(char *path);

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

是什么给出了?

1 个答案:

答案 0 :(得分:13)

否定。它适用于我。你确定包含了正确的标题吗?

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

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

您能否告诉我们有关您的编译环境的更多信息?