1. ホーム
  2. c++

[解決済み] intptr_tの使い方を教えてください。

2022-03-02 16:19:09

質問

データを失うことなくポインタとの間でキャストできるのは整数型であることは知っていますが、なぜそんなことをしたいと思うのでしょうか?整数型であることは void* ポインタを保持するために THE_REAL_TYPE* はポインタ演算のために?

EDIT
既に質問されている質問には答えられません。そこでの質問は、もし intptr_t の一般的な置き換えとして void* は良いアイデアで、そこでの回答は "don't use intptr_t" のようなので、私の質問はまだ有効です。の良い使用例とは何でしょうか? intptr_t ?

解決方法は?

第一の理由は、ビット演算ができないことです。 void * しかし、同じことが intptr_t .

アドレスに対してビット演算を行う必要がある場合、多くの場合は intptr_t .

しかし,ビット演算の場合は,最も良い方法は unsigned の対になるものです。 uintptr_t .

で述べたように 他の回答 によって チャックス また、ポインタの比較も重要なポイントです。

また、FWIWでは、以下のように C11 規格、§7.20.1.4。

これらのタイプはオプションです。