2 Stimmen

BOOL-Definition

Wenn der Datentyp BOOL nicht ohne weiteres vordefiniert ist, habe ich boolean mit der folgenden Definition verwendet,

typedef unsigned char BOOL;

(Wegen der Speichernutzung).

Ich habe erkannt, dass es aus Leistungsgründen besser sein könnte, die native Busbreite zu verwenden. Bei einem 32-Bit-Prozessor kann es zum Beispiel sein

typedef unsigned int BOOL;

Was passiert nun mit dem 64-Bit-Prozessor, wenn ich weiterhin BOOL für die native Busbreite definieren möchte?

13voto

MarkusQ Punkte 21488

Ich würde mir weniger Sorgen um die native Busbreite machen als um eine effizient Breite (das war doch Ihr Ziel, oder?)? Auf so ziemlich jeder Maschine kompiliert jeder anständige C-Compiler unsigned int auf eine einigermaßen effiziente Breite zu bringen, dann kann es losgehen.

9voto

philant Punkte 32877

Spekulieren Sie niemals über Leistungen, Maßnahme . Messung, wird die endgültige Antwort auf die Frage geben, was besser ist - und denken Sie daran, dass sich dies bei jeder neuen Compiler-Version, System-Upgrade ... ändern kann.

Vielleicht brauchen Sie auch eines Tages ein Array von boolean, in diesem Fall können Sie das Prozessorwort für bool verwenden nicht die beste Lösung sein.

5voto

Judge Maygarden Punkte 25975

Warum verwenden Sie nicht den Typ bool in stdbool.h ?

4voto

TofuBeer Punkte 59410

3voto

lakshmanaraj Punkte 4130

Ich würde empfehlen, einen Präprozessor zu verwenden.

 #ifndef BOOL 
   #ifdef ILP32
     #define BOOL uint32_t
   #endif
   #ifdef LP64
     #define BOOL uint64_t
   #endif
 #endif

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X