In gcc
, wie kann ich überprüfen, welche C Präprozessordefinitionen während der Kompilierung eines C-Programms vorhanden sind, insbesondere welche Standard- oder plattformspezifischen Makrodefinitionen definiert sind?
Eine wahrscheinliche Quelle der vordefinierten Makros für eine bestimmte Kombination aus Compiler und Plattform ist das Predef-Projekt bei Sourceforge. Sie versuchen, einen Katalog aller vordefinierten Makros in allen C- und C ++ - Compilern auf allen Plattformen zu verwalten. In der Praxis haben sie eine ganze Reihe von Plattformen für GCC und ein paar andere Compiler abgedeckt.
Sie haben dies durch eine Kombination aus sorgfältigem Lesen der Dokumentation und einem Shell-Skript erreicht, das herausfindet, welche Makros auf die harte Art und Weise vordefiniert sind: es versucht sie. Mein Verständnis ist, dass es tatsächlich jede Zeichenfolge versucht, die es im ausführbaren Bild des Compilers und / oder Präprozessors finden kann, um zu sehen, ob es eine vordefinierte Bedeutung hat.
Sie fügen alle Informationen, die sie noch nicht haben, gerne in ihre Datenbank ein.
Ein Programm kann ein Makro bei eins definieren Punkt, entferne diese Definition später, und dann ein anderes bieten Definition danach. Also, bei verschiedene Punkte im Programm, a Makro kann unterschiedliche Definitionen haben, oder haben überhaupt keine Definition.
Tags und Links macros c gcc c-preprocessor