Oggi ho dovuto usare la basename()
funzione e il man 3 basename
( qui ) mi ha dato uno strano messaggio:
Appunti
Esistono due diverse versioni di basename () : la versione POSIX sopra descritta e la versione GNU , che si ottiene dopo
#define _GNU_SOURCE
#include <string.h>
Mi chiedo cosa #define _GNU_SOURCE
significhi: sta contaminando il codice che scrivo con una licenza relativa a GNU? O è semplicemente usato per dire al compilatore qualcosa del tipo " Beh, lo so, questo insieme di funzioni non è POSIX, quindi non portatile, ma mi piacerebbe usarlo comunque ".
Se è così, perché non dare alle persone diverse intestazioni, invece di dover definire alcune macro oscure per ottenere un'implementazione della funzione o l'altra?
Qualcosa mi disturba anche: come fa il compilatore a sapere quale implementazione di funzione collegare con l'eseguibile? Usa anche questo #define
?
Qualcuno ha qualche suggerimento da darmi?
_GNU_SOURCE
è quello di ottenerestrfry
ememfrob
.