Soweit ich weiß, variiert die Definition von intptr_t je nach Architektur - es ist garantiert, dass es die Kapazität hat, einen Zeiger darzustellen, der auf den gesamten einheitlichen Adressraum eines Prozesses zugreifen kann.
Nginx (beliebter Open-Source-Web-Server) definiert einen Typ, der als Flag (boolean) verwendet wird, und dies ein typedef zu intptr_t
. Wenn man nun die x86-64-Architektur als Beispiel heranzieht - die Zugang zu einer Fülle von Befehlen hat, die Operanden aller Größen abdecken - warum sollte das Flag als intptr_t definiert werden? Würde die Tradition der Verwendung eines 32-Bit-Bool-Typs nicht genauso gut passen?
Ich habe das Argument 32-Bit vs. 8-Bit-Bools selbst durchgespielt, als ich ein neuer Entwickler war, und die Schlussfolgerung war, dass 32-Bit-Bools aufgrund der Feinheiten des Prozessordesigns für den allgemeinen Fall besser funktionieren. Warum sollte man dann auf 64-Bit-Bools umsteigen?