Aujourd'hui, j'ai dû utiliser la basename()
fonction, et man 3 basename
( ici ) m'a donné un message étrange:
Remarques
Il existe deux versions différentes de basename () - la version POSIX décrite ci-dessus et la version GNU , que l'on obtient après
#define _GNU_SOURCE
#include <string.h>
Je me demande ce que cela #define _GNU_SOURCE
signifie: est-ce que cela entache le code que j'écris avec une licence liée à GNU? Ou est-ce simplement utilisé pour dire au compilateur quelque chose comme " Eh bien, je sais, cet ensemble de fonctions n'est pas POSIX, donc pas portable, mais j'aimerais quand même l'utiliser ".
Si tel est le cas, pourquoi ne pas donner aux gens des en-têtes différents, au lieu d'avoir à définir une macro obscure pour obtenir une implémentation de fonction ou une autre?
Quelque chose me dérange aussi: comment le compilateur sait-il quelle implémentation de fonction lier avec l'exécutable? L'utilise-t-il #define
également?
Quelqu'un a des conseils à me donner?
_GNU_SOURCE
est d'obtenirstrfry
etmemfrob
.