相关疑难解决方法(0)

"#define _GNU_SOURCE"意味着什么?

今天我不得不使用这个basename()功能,而man 3 basename(这里)给了我一些奇怪的信息:

笔记

有两个不同版本的basename() - 上面描述的POSIX版本,以及GNU版本,后者可以使用

#define _GNU_SOURCE
#include <string.h>

我想知道这#define _GNU_SOURCE意味着什么:它是否污染了我用GNU相关许可证编写的代码?或者它只是用于告诉编译器类似" 嗯,我知道,这组函数不是POSIX,因此不可移植,但我还是想用它 ".

如果是这样,为什么不给人们不同的标题,而不是必须定义一些模糊的宏来获得一个函数实现或另一个?

有些东西也让我感到困惑:编译器如何知道哪个函数实现与可执行文件链接?它也使用这个#define吗?

有人有一些指示可以给我吗?

c posix gnu

143
推荐指数
4
解决办法
6万
查看次数

标签 统计

c ×1

gnu ×1

posix ×1