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