2016-07-13 10 views
0

他のチームのソースコードをコンパイルしています。私はエラーを理解していますが、このコード行を理解できません(コードベースは正しいと思われます)。((__m64 *)&(ub8)ddata)エラーを返す:単項演算子として必要な左辺値 '&'オペランド

data_vec = _mm_set1_epi64(*((__m64*)&(ub8) ddata)); 

(__m64 *)とは何ですか?そして、それは何をしていますか?

EDIT:エラーは次のとおりです。エラー:左辺値単項「&」のオペランドとして必要

+0

'_mm_set1_epi64x'は、' __m64'(MMX)オペランドの代わりにint64をとります。 (コンパイラが32bitモードで提供していることを確認してください) –

答えて

2

それは、ポインタへのキャストです。使用されるSSE2のタイプと機能については、MSDN for informationを参照してください。

エラーは無関係です。キャストされた値はもはや左辺値ではなく、&は左辺値でのみ使用できます。 (ub8)のキャストを削除するか、最初にそのコードを生成した人物またはマクロを見つけてください。

+0

私は(__m64 *)を使っていたのですが、なぜポインタがアンパサンドの前に置かれているのですか? – nineties

+0

'ddata'はポインタですか? – a3f

+0

はい、それはポインタです。私は鋳造物を取り除くことに躊躇しています(それはプロジェクトファイルの3000の場所のように使用されています)... – nineties

関連する問題