誰かがこの問題を助けることができたら嬉しいです。多次元__m256iデータ型のアラインメントの問題
私は(それがCである)このコードを持っている:私は見ることができないんだ
"Error 'state': formal parameter with requested alignment of 32 won't be aligned"
何の問題:私はエラーを取得するよう、私は、これを構築することはできません
#include <immintrin.h>
void test_vectors(__m256i state[5][2]);
void test() {
__m256i state[5][2];
for (int i = 0; i < 5; i++) {
state[i][0] = _mm256_setzero_si256();
state[i][1] = _mm256_setzero_si256();
}
test_vectors(state);
}
void test_vectors(__m256i state[5][2]) {
__m256i some_new_vector = _mm256_xor_si256(state[0][0], state[0][1]);
}
ここにある。私は配列の次元を指定したので、コンパイラはそれを理解できるはずです。さらに、なぜインテルイントリンシクスライブラリが、そのライブラリ関数の大部分にアライメントが必要なので、整列していない__m256i構造体が返されるのか分かりません。すぐに私はラインだけでで行う配列を、(アクセスしているため、これに伴っしかし
void schwabe_bitsliced_primate(__m256i *state[5]);
:私がする関数のシグネチャを変更することで、エラーを回避することができる午前
私のtest_vectorメソッド)、私は "struct at NULL"例外が発生します。 状態配列のパラメータが1次元(つまり状態[5]のみ)であれば問題ありません。
説明した回避策を明確にすることができますか?つまり、実際のコードで関数の署名を変更することですか?関数パラメータの宣言として、 '__m256i state [5] [2]'は '__m256i(* state)[2]'と同等で、 '__m256i * state [2]'とは完全に異なっています。 –
さらに、あなたのコードは[mcve]ではないようです。これは、非標準データ型の宣言および/またはヘッダー、およびそれらを操作する関数を省略します。 –
関連:http://stackoverflow.com/questions/28488986/c-opengl-formal-parameter-with-declspecalign16-wont-be-aligned。 –