Floating Point Konstanten und Präprozessor Makros

Einige wichtige Konstanten bei C Floating-Point Operationen benötigen Konstanten die laut ISO-C Standard in der header Datei „float.h“ definiert werden, bspw. die Anzahl der signifikanten Nachkommastellen. In der Compilerspezifischen Datei /usr/lib/gcc/i586-suse-linux/4.1.2/include/float.h
finde ich aber nur:

#undef FLT_DIG
#define FLT_DIG __FLT_DIG__

Die vor- und nachgestellten doppelten Unterstriche, lassen auf eine Präprozessor Makro schliessen, welches an dieser Stelle verwendet wird. Man muss nur erstmal herausbekommen, wo bei der GCC diese Makros definiert sind. Die schnellste Möglichkeit ist es eine einfache C Datei mit speziellen Optionen zu kompilieren.

gcc -E -dM -x c test.c

Dann werden aber auch alle Makros aufgelistet, die durch includes in den Verarbeitungsschritt gelangten. Daher ist eine Art Dummy Anweisung besser, die dazu führt, dass nur noch Präprozessor Makros aufgelistet werden.

gcc -E -dM -x c <(true)

-E : stoppt nach dem Preprozessing – sendet den preprozessierten Code to stdout
-dM : dumped nach der Maschinenabhängigen Reorganisierung in file.35.mach
-x : spezifiziert die Sprache (hier:C)

Die Anregung dazu gab ein Artikel auf den Webseiten von Matthias Kettner.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.