Heute musste ich die basename()
Funktion benutzen und das man 3 basename
( hier ) gab mir eine seltsame Nachricht:
Anmerkungen
Es gibt zwei verschiedene Versionen von basename () - die oben beschriebene POSIX- Version und die GNU-Version , nach der man sucht
#define _GNU_SOURCE
#include <string.h>
Ich frage mich, was das #define _GNU_SOURCE
bedeutet: Beschmutzt es den Code, den ich mit einer GNU-bezogenen Lizenz schreibe? Oder wird es einfach verwendet, um dem Compiler so etwas wie " Nun, ich weiß, dieser Funktionssatz ist nicht POSIX, also nicht portabel, aber ich würde ihn trotzdem gerne verwenden" zu sagen .
Wenn ja, warum nicht den Leuten unterschiedliche Header geben, anstatt ein obskures Makro definieren zu müssen, um die eine oder andere Funktionsimplementierung zu erhalten?
Etwas stört mich auch: Woher weiß der Compiler, welche Funktionsimplementierung mit der ausführbaren Datei verknüpft werden soll? Verwendet es #define
das auch?
Hat jemand ein paar Hinweise, die er mir geben kann?
_GNU_SOURCE
besteht, zu bekommenstrfry
undmemfrob
.