Hoje eu tive que usar a basename()
função, e o man 3 basename
( aqui ) me deu uma mensagem estranha:
Notas
Existem duas versões diferentes de basename () - a versão POSIX descrita acima e a versão GNU , que é obtida depois
#define _GNU_SOURCE
#include <string.h>
Estou imaginando o que isso #define _GNU_SOURCE
significa: está corrompendo o código que escrevo com uma licença relacionada ao GNU? Ou é simplesmente usado para dizer ao compilador algo como " Bem, eu sei, esse conjunto de funções não é POSIX, portanto não é portátil, mas eu gostaria de usá-lo de qualquer maneira ".
Se sim, por que não dar às pessoas cabeçalhos diferentes, em vez de precisar definir alguma macro obscura para obter uma implementação de função ou outra?
Algo também me incomoda: como o compilador sabe qual implementação de função vincular ao executável? Também usa isso #define
?
Alguém tem algumas dicas para me dar?
_GNU_SOURCE
é obterstrfry
ememfrob
.