c++ - キャストを再解釈する動作のためのGCC実装

c++ gcc reinterpret-cast

GCCコンパイラでキャストを再解釈する方法を知るにはどうすればよいですか?ドキュメントに記載されていますか?参照やリンクが存在する場合、それを知っていてもよいですか?
答え
標準のドキュメントを読むと、さまざまな型について非常に明確になります。しかし、基本的なポインタについては:


ポインターは、それを保持するのに十分な大きさの整数型に明示的に変換できます。マッピング関数は実装定義です。 [注:基礎となるマシンのアドレス指定構造を知っている人にとっては、当然のことです。 —後記] std::nullptr_t型の値は、整数型に変換できます。この変換の意味と有効性は、(void *)0から整数型への変換と同じです。 [注:reinterpret_castを使用して、型の値を型std::nullptr_tに変換することはできません。 —エンドノート]


整数の場合:


整数型または列挙型の値は、明示的にポインターに変換できます。十分なサイズの整数に変換されたポインター(実装に存在する場合)と同じポインター型に戻るポインターは、元の値になります。ポインタと整数の間のマッピングは、それ以外の場合は実装定義です。 [注:3.7.4.3で説明されている場合を除き、このような変換の結果は安全に派生したポインター値にはなりません。 —文末脚注]
関連記事

c++ - 点群と任意の平面の交点から曲線を取得する方法は?

c++ - スイッチでのクラスタイプの使用

c++ - エディットコントロールとリッチコントロールでテキストを作成して、選択できないようにする方法を教えてください。

c++ - コードブロックのあるウィンドウでのブースト-エラー:ブーストへの未定義の参照

c++ - Qt:c++クラスでは、ウィジェットフィールドがポインタとして宣言されていないことが適切です

c++ - boost::geometry:for_each_segmentを行うには?

c++ - C++ OCXモジュールでvoid *を取る関数を指定する方法は?

c++ - C++の単純なビットマップグラフィックス?

c++ - FindConnectionPointはE_NOINTERFACEを返します

c++ - sqlite3_mprintf()をUTF-16文字列で使用するにはどうすればよいですか?