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