次の方法で共有


戻り値 (C++)

64 ビットに収まるスカラー戻り値は、RAX (__m64 型を含む) を通じて返されます。float 型、double 型、および __m128__m128i__m128d などのベクター型を含む非スカラー型は、XMM0 で返されます。RAX や XMM0 で返される値の未使用ビットの状態は未定義です。

ユーザー定義型は、グローバル関数や静的メンバー関数からの値で返すことができます。RAX で値によって返すには、ユーザー定義型の長さが 1、2、4、8、16、32、または 64 ビットでなければなりません。ユーザー定義型のコンストラクター、デストラクター、またはコピー代入演算子ではなく、プライベートまたは保護された非静的データ メンバーではなく、参照型の非静的データ メンバーではなく、基底クラスではなく、仮想関数ではありません。これらの要件を満たさないデータ メンバーでもありません。(これは、実質的には C++03 POD 型の定義です。C++11 規格ではこの定義は変更されているので、このテストに std::is_pod を使うことはお勧めしません。)それ以外の場合は、呼び出し元が、メモリを割り当て、最初の引数として戻り値のポインターを渡す必要があります。後続する引数は、引数 1 つ分だけ右にシフトされます。RAX 内の呼び出し先は同じポインターを返す必要があります。

以下の例は、宣言を指定して関数に対してパラメーターと戻り値を渡す方法を示しています。

戻り値 1 – 64 ビットの結果の例

  

戻り値 2 – 128 ビットの結果の例

  

戻り値の例 3 – ポインターによるユーザー型の結果

     

戻り値の例 4 – 値によるユーザー型の結果

     

参照

関連項目

呼び出し規約