共用方式為


傳回值 (C++)

可納入 64 位元的純量傳回值將會透過 RAX 傳回,其中包括 __m64 類型。非純量類型包括浮點數、雙精度浮點數和向量類型 (例如 __m128__m128i__m128d) 將於 XMM0 中傳回。對於 RAX 或 XMM0 中傳回的值,其中未使用之位元的狀態尚未定義。

使用者定義的類型可透過全域函式和靜態成員函式的值傳回。使用者定義的類型若要由 RAX 中的值傳回,其長度必須為 1、2、4、8、16、32 或 64 個位元;沒有使用者定義的建構函式、解構函式或複製指派運算子;沒有私用或受保護的非靜態資料成員;沒有參考類型的非靜態資料成員;沒有基底類別;沒有虛擬函式;亦沒有不符合這些需求的資料成員。(這基本上是 C++03 POD 類型的定義。因為在 C++11 標準中的定義已經變更,所以我們不建議將 std::is_pod 用於這項測試。)否則,呼叫端會負責配置記憶體,並且為傳回值傳遞一個指標做為第一個引數。後續的引數將向右移一個引數。在 RAX 中的被呼叫端必須傳回相同的指標。

這些範例展示有指定之宣告的函式如何傳遞參數和傳回值:

傳回值 1 - 64 位元結果的範例

  

傳回值 2 - 128 位元結果的範例

  

傳回值 3 – 由指標產生之使用者類型結果的範例

     

傳回值 4 – 由值產生之使用者類型結果的範例

     

請參閱

參考

呼叫慣例