ポインタを整数に変換する
void* 引数を適切な型に変換する必要がある状況では、次のことが重要です。異なるマシン アーキテクチャ間の互換性を確保します。
64 ビット マシンでは、void* を int にキャストすると精度が失われる可能性があります。これに対処するために、最新の C アプローチでは reinterpret_cast<:uintptr_t> を使用します。これにより、移植可能で効率的な変換が保証されます。
正しい整数型:
ポインタを整数として正しく格納するには、< で定義されている適切な型は uintptr_t または intptr_t です。 ;stdint.h> C99 の場合、または C 11 の std 名前空間。
正しいキャスト演算子:
C では、 reinterpret_cast がポインター変換の優先キャストです。 C キャストの使用は避けてください。
例:
#include <cstdint> void *p; std::uintptr_t i = reinterpret_cast<std::uintptr_t>(p);
関連質問:
以上がC で void* ポインターを整数に安全に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。