uintptr_t portable Alternative

9

Ich möchte die Speicherausrichtung eines Typs T überprüfen. Der direkte Weg dazu ist

%Vor%

jedoch ist uintptr_t nicht Teil des existierenden C ++ - Standards und wird von einigen Compilern nicht unterstützt. Daher suche ich nach einer portablen alternativen Möglichkeit, dies zu tun, und std::ptrdiff_t sieht für mich gut aus. std::ptrdiff_t garantiert in der Lage zu sein, die Differenz zwischen zwei Zeigern zu speichern, aber wer sagt, dass einer dieser Zeiger nicht Null-Zeiger sein kann? In diesem Fall muss std::ptrdiff_t mindestens so groß sein wie der Zeiger selbst.

%Vor%

oder so (um die Multiplikation mit sizeof(T) loszuwerden)

%Vor%

Was halten Sie von einer solchen Lösung? Ist es tragbar genug? Ich sehe keine Gründe, warum dies scheitern sollte, möchte ich jedoch bestätigen.

Danke.

    
ledokol 16.02.2011, 05:36
quelle

1 Antwort

1

Ich bin nicht sicher, was die Frage hier ist. "Was denken Sie?" Ich denke, dass ptrdiff_t tatsächlich der richtige Datentyp ist, um den Unterschied zwischen zwei Zeigern darzustellen, aber es macht wenig Sinn, zwei Zeiger zu vergleichen, wenn sie nicht in einen Block aus zusammenhängendem Speicher zeigen, der aus einer einfachen Zuweisung stammt (und folglich auch nicht von den zwei verglichenen Zeigern sollte jemals NULL sein).

    
Enno 17.02.2011 08:04
quelle