今天我不得不使用 basename()
函数,而 man 3 basename
(给你)给了我一些奇怪的信息:
笔记
Basename ()有两个不同的版本——上面描述的 POSIX版本和 GNU 版本版本,后者是后者
#define _GNU_SOURCE
#include <string.h>
我想知道这个 #define _GNU_SOURCE
是什么意思: 它是我用 GNU 相关许可证编写的代码 污染吗?或者它只是用来告诉编译器类似于“ 我知道,这组函数不是 POSIX,因此不可移植,但我还是想使用它”的东西。
如果是这样,为什么不给人们不同的头部,而是必须定义一些模糊的宏得到一个函数实现或其他?
还有一个问题困扰着我: 编译器如何知道哪个函数实现要链接到可执行文件?它也使用这个 #define
吗?
有人有什么建议吗?