In einer Anwendung, die ich pflege, haben wir ein Problem mit Datei-Deskriptor-Einschränkungen festgestellt, die die stdlib betreffen. Dieses Problem betrifft nur die 32-Bit-Version der Standardbibliothek.#ifdef für 32-Bit-Plattform
Ich habe ein Update für meinen Code entwickelt und möchte es implementieren, aber nur beim Kompilieren für 32-Bit ausführbare Datei. Welches Preprozessor-Symbol kann ich #ifdef angeben, um festzustellen, ob der Code für ein 32- oder 64-Bit-Ziel kompiliert wird?
EDIT
Sorry, nicht erwähnt, ist der Code Cross-Plattform, Linux, Windows, Solaris und einige andere Unix-Varianten, vor allem für die Kompilierung mit GCC. Irgendwelche De-facto-Standards, die ich plattformübergreifend nutzen kann?
EDIT 2
ich einige Definitionen „__ILP23“ und „__LP64“ gefunden zu haben, wie sie scheinen arbeiten kann ... eine Diskussion here erklärt den Hintergrund auf der Unix-Plattform. Jeder hatte irgendwelche Erfahrungen mit diesen Definitionen? Wird das nutzbar sein?
Das ist plattformabhängig. Verschiedene Betriebssysteme verwenden unterschiedliche # defines. Wenn du Glück hast, hat Boost irgendwo einen tragbaren Wrapper versteckt. Aber ansonsten müssen Sie nur nach den plattformspezifischen suchen. Auf welcher Plattform laufen Sie übrigens? – jalf
Bearbeitet die Frage ... Code Ziele primär Windows, Solaris und Linux, mit Teilen auch unter AIX und HP-UX. – veefu
Nur eine Idee: #if sizeof (int) == 64 – mmmmmmmm