Code für die printf-Funktion in C [duplicate]

Lesezeit: 2 Minuten

Benutzeravatar von Rainer Zufall
Rainer Zufall

Mögliches Duplikat:

Quellcode von c/c++-Funktionen

Ich habe mich gefragt, wo ich den C-Code finden kann, der verwendet wird, damit beim Schreiben von printf(“Hello World!”); in meinem C-Programm, um zu wissen, dass es diese Zeichenfolge auf STDOUT drucken muss. Ich habe in nachgesehen, aber dort konnte ich nur seinen Prototyp int printf(const char *format, …) finden, aber nicht, wie es intern aussieht.

  • Ich glaube nicht, dass die Quelle verfügbar ist. +1 sowieso, das habe ich mich immer gefragt.

    – Schwarzbär

    1. Februar 2011 um 19:49 Uhr

  • verwandt – Verstehen der Hardware von printf- und C/C++-Funktionsdefinitionen ohne Assemblierung

    – jschmier

    1. Februar 2011 um 20:57 Uhr

  • printf ist definiert in Bezug auf putc Es ist also nicht erforderlich, Betriebssystemaufrufe zu tätigen.

    – R.. GitHub HÖR AUF, EIS ZU HELFEN

    1. Februar 2011 um 21:11 Uhr

  • @Tergiver, @R: Ihr habt beide recht. printf behandelt die Formatierung und ruft dann auf putcdie möglicherweise andere Hilfsfunktionen aufruft, aber letztendlich zu einem Betriebssystemaufruf führt.

    – Ben Voigt

    2. Februar 2011 um 3:19 Uhr

  • Mein Punkt war, dass die Betriebssystemaufrufe auf einem viel niedrigeren Niveau liegen, und printf ist im Wesentlichen eine reine Bibliotheksfunktion zusätzlich zu untergeordneten stdio-Aufrufen.

    – R.. GitHub HÖR AUF, EIS ZU HELFEN

    2. Februar 2011 um 3:21 Uhr

Benutzeravatar von mschaef
mschaef

Hier ist die GNU-Version von printf… man sieht es vorbeifahren stdout zu vfprintf:

__printf (const char *format, ...)
{
   va_list arg;
   int done;

   va_start (arg, format);
   done = vfprintf (stdout, format, arg);
   va_end (arg);

   return done;
}

Siehe hier.

Hier ist eine Verbindung zu vfprintf… die gesamte Formatierungs-‘Magie’ findet hier statt.

Das einzige, was wirklich „anders“ an diesen Funktionen ist, ist, dass sie Varargs verwenden, um an Argumente in einer Argumentliste mit variabler Länge zu gelangen. Abgesehen davon sind sie nur traditionelles C. (Dies steht im Gegensatz zu Pascals printf Äquivalent, das mit spezifischer Unterstützung im Compiler implementiert wird … zumindest war es früher so.)

  • Wo befindet sich diese Datei unter meinem Linux-System. Ich verwende RHEL. Vielen Dank!

    – xxks-kkk

    11. Mai 2016 um 5:25 Uhr

  • @Jerry Sein Objektcode befindet sich in Ihrer libc. Laden Sie den glibc-Quellcode für die Quelle herunter.

    – a3f

    28. Juli 2016 um 16:01 Uhr

  • eine der bekanntesten Bibliotheksfunktionen, und was drin ist Zeile 98 seines Quellcodes? Haufen goto und “Das ist ein Hack!!!” 😉

    – Cee McSharpface

    31. Juli 2018 um 20:42 Uhr


1415980cookie-checkCode für die printf-Funktion in C [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy