Eine Codebase, mit der ich arbeite, hat historisch versucht - absichtlich - Abhängigkeiten zu stdio.h zu vermeiden. Es hat seine eigene Druckformatierung und Mechanismen, und das sind was anstelle von printf o.ä. verwendet werden sollVerhindern Aufnahme von stdio.h (oder anderen Standard-Header)
Aber jemand fügt manchmal eine Abhängigkeit hinzu, die bemerkt und herausgenommen werden muss. Also habe ich versucht, einen Alarm für den einfachsten Fällen zu machen:
#if !defined(NDEBUG)
void printf(float dont_link_with_stdio_h);
#endif
Die gcc Menschen scheinen entlang der Linien des Anhaltens zu leicht Fehler zu denken haben, denn es gibt eine hilfreiche Nachricht ist, wenn Sie dies tun ... ob Sie haben <stdio.h>
oder nicht enthalten.
gegensätzliche Typen für integrierte Funktion 'printf'
Es gibt einen Weg, um diese Warnung auszuschalten (-fno-builtin
). Und es gibt alle Arten von Ansätzen, die Dinge wie Filter der Symbol-Dump für Dinge tun, die Sie nicht dort sein wollen ...
Aber gibt es eine trivial einfache non-warning-verursacht (wenn Sie nicht include stdio.h) um jemanden darauf aufmerksam zu machen, dass sie eine unerwünschte Drucknutzung eingeführt haben?
Können Sie die kompilierte Version der Bibliothek (.lib) nicht entfernen, damit sie nicht kompiliert/verlinkt wird? –
@LeeTaylor Ich würde es vorziehen, nicht die Kompilierungsumgebung zu manipulieren, die für andere Dinge verwendet wird, die diese Bibliothek enthalten (und diese Dinge sind frei, um stdio.h aufzunehmen, wenn sie es wünschen). Ich bin auf der Suche nach etwas weniger aufdringlich als die Verwendung der Methode, die ich versuchte und Hinzufügen von "-fno-builtin" ... z. etwas, das nur in der Quelle gemacht werden kann. – HostileFork
'grep printf * .c'? –