2012-03-30 7 views
0

Wie während 64-Bit-Projekt auf 32-Bit-Projekt Portierung für die Herstellung Bereich kompatibel geändert:Während Projekt von 64-Bit auf 32-Bit-Portierung: float in long double geändert gibt Fehler für% f

typedef float float_t; 

zu

typedef long double float_t; 

Alles geht perfekt, aber Fehler kommt in allen printf Specifier für% f. Ich möchte nicht in% Le im gesamten Code ändern.

Bitte schlagen Sie jede generische Lösung vor, so dass sie sowohl für 32-Bit- als auch für 64-Bit-Systeme in c-Sprache verfügbar ist.

+0

Bitte markieren Sie Ihre Frage mit C oder C ein Makro basiert auf der Plattform für definieren könnte ++ je nachdem, welche Sprache Sie arbeite mit. – Mat

+4

Warum wechseln Sie sowieso von Float zu Long Double? Dies ist nicht notwendig oder sinnvoll bei der Portierung zwischen 32- und 64-Bit-Architekturen. –

Antwort

3

Sie werden für den Schwimmer/long double, oder verwenden Sie eine spezielle Formatierungsfunktion

+0

Nach der Ableitung von "inttypes.h" können Sie "PRIf64" entweder zu "f" oder "Lf" definieren. Verwendung: 'printf (" value =% 9.2 "PRIf64" \ n ");' – tomlogic

0

Sie Marke, die benötigt hat keinen #define für die Format-String haben, zu verwenden, welche Sprache Sie verwenden. In C++ std::cout ist gegenüber printf bevorzugt und es gibt Ihnen typgerechte Formatierung.

Wenn Sie C verwenden, können Sie sowohl die Art der Gleitkomma-Variablen und der Formatierungsstring für printf