Hoy tuve que usar la basename()
función, y el man 3 basename
( aquí ) me dio un mensaje extraño:
Notas
Hay dos versiones diferentes de basename () : la versión POSIX descrita anteriormente y la versión GNU , que se obtiene después
#define _GNU_SOURCE
#include <string.h>
Me pregunto qué #define _GNU_SOURCE
significa esto : ¿está contaminando el código que escribo con una licencia relacionada con GNU? ¿O simplemente se usa para decirle al compilador algo como " Bueno, lo sé, este conjunto de funciones no es POSIX, por lo tanto no es portátil, pero me gustaría usarlo de todos modos ".
Si es así, ¿por qué no dar a las personas diferentes encabezados, en lugar de tener que definir alguna macro oscura para obtener una implementación de una función u otra?
Algo también me molesta: ¿cómo sabe el compilador qué implementación de función vincular con el ejecutable? ¿Utiliza esto #define
también?
¿Alguien tiene algunos consejos para darme?
_GNU_SOURCE
es para obtenerstrfry
ymemfrob
.