Seite 1 von 1

Quelltext von printf() / stdio.h

Verfasst: Fr Mai 24, 2019 10:25 pm
von Abrissbirne
Hallo,

ich suche den Quelltext von z.B. printf() um besser zu verstehen, wie das Einbinden von Librarys funktioniert und weil mich interessiert, wie professioneller Quelltext aussieht.

stdio.h finde ich z.B. unter /usr/include/stdio.h. Darin finde ich aber nur die Deklaration von printf() und keinen Hinweis zur Definition.
Kann mir jemand auf die Sprünge helfen?

Re: Quelltext von printf() / stdio.h

Verfasst: Fr Mai 24, 2019 11:04 pm
von Xin
Abrissbirne hat geschrieben:
Fr Mai 24, 2019 10:25 pm
ich suche den Quelltext von z.B. printf() um besser zu verstehen, wie das Einbinden von Librarys funktioniert und weil mich interessiert, wie professioneller Quelltext aussieht.
Eine Library ist der kompilierte Quelltext. Gewissermaßen ein Executable ohne main, das veröffentlicht welche Funktionen man aufrufen kann.

Je nach Compiler ist die libc mit Quelltext verfügbar. Beim GCC oder Clang ist das OpenSource, bei Visual Studio wage ich das zu bezweifeln.

Das ist definitiv professioneller Quelltext, aber der Quelltext ist nicht zwangsläufig auf Lesbarkeit optimiert.
Abrissbirne hat geschrieben:
Fr Mai 24, 2019 10:25 pm
stdio.h finde ich z.B. unter /usr/include/stdio.h. Darin finde ich aber nur die Deklaration von printf() und keinen Hinweis zur Definition.
Kann mir jemand auf die Sprünge helfen?
Die Deklaration erklärt dem Compiler, dass eine printf-Funktion existiert. Wenn Du gcc aufrufst, wird implizit die libc hinzugelinkt.

Im Prinzip ist printf ziemlich langweilig, weil es quasi nur eine andere printf-Funktion ruft ;)
https://sourceware.org/git/?p=glibc.git ... 0a;hb=HEAD

Spannend wird es dann hier:
https://sourceware.org/git/?p=glibc.git ... 0d;hb=HEAD

Die Quellcodes kannst Du Dir entweder clonen oder von Deiner Distribution aus dem Quellcode-Repository holen.

Re: Quelltext von printf() / stdio.h

Verfasst: Sa Mai 25, 2019 2:59 pm
von Abrissbirne
Vielen Dank. Das bringt mich ein ganzes Stück weiter.