1

コンパイル時にポインター型の値の範囲を知りたいです。 limits.h純粋な数値型の最大値と最小値のみを指定します。ハードコーディングされた定数を使用したくありませんsizeof(foo*)

4

2 に答える 2

3

ポインターは数値ではありません。特に、それらは完全に順序付けられているわけではありません - 2 つのランダムなポインタpとが与えられた場合、一方を他方から減算して意味のある結果を得ることができません - 両方が同じオブジェクト (メモリ ブロック、静的または自動オブジェクトなど)qを指していない限り、UB です。malloc)。したがって、ポインターの許容範囲の概念は、標準 C++ では意味がありません。

于 2010-07-15T20:18:58.743 に答える
3

intptr_t を使用すると思います。ポインター値を保持できる整数として定義されているため、intptr_t の最小値/最大値が機能するはずです。

実際のポインターの値よりも大きい場合がありますしかし、最小/最大値だけが必要なクラスの説明から、完全な精度が必要だとは思いません。

于 2010-07-15T19:36:02.093 に答える