如何使用 basename()dirname() 的 GNU C 库版本?

如果你

#include <libgen.h>

对于目录名
您已经获得了 basename() 的 POSIX 版本,而不是 GNU 版本。 (即使你
#define _GNU_SOURCE

据我所知,C 中没有条件导入。是否有特定于 gcc 的技巧?

最佳答案

只需自己编写并给它一个与 basename 不同的名称。 GNU 坚持创建可以用 1-3 行编写的标准函数的替代非一致性版本,这完全是愚蠢的。

char *gnu_basename(char *path)
{
    char *base = strrchr(path, '/');
    return base ? base+1 : path;
}

这样,您的程序也将更加便携。

关于c - 在 C 源代码中使用 GNU 版本的 basename() 和 dirname(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5802191/

10-11 19:36