簡體   English   中英

聲明__m256后無法訪問其成員

[英]After declaring a __m256 fail to access its members

當我嘗試使用icpc進行編譯時,它顯示“表達式必須具有類類型”。 對此感到困惑。 請幫忙。

int main()
{
    __m256d temp;
    temp.m256d_f64[0] = 1;
    return 0;
}       

我可以重現此問題。 在英特爾編譯器隨附的immintrin.h中,我們對__m256d具有以下定義:

typedef struct _MMINTRIN_TYPE(32) __m256d {
    double m256d_f64[4];
} __m256d;

在上面的定義中,結構名稱和別名相同,這使當前的編譯器感到困惑。 Intel Compiler似乎沒有將typedef名稱識別為可以用較小的測試用例證明的類:

$ cat test1.cc
typedef struct __m256d {
    double m256d_f64[4];
} m256d;

int main()
{
    __m256d temp;
    temp.m256d_f64[0] = 1;
    return 0;
}
$ icpc test1.cc –c

當我如下所示更改typedef和實例化temp(使用typedefed名稱而不是struct名稱)時,ICC會失敗,但是GCC可以工作:

$ cat test1.cc
typedef struct m256d {
    double m256d_f64[4];
} __m256d;

int main()
{
    __m256d temp;
    temp.m256d_f64[0] = 1;
    return 0;
}
$ icpc test1.cc -c
test1.cc(8): error: expression must have class type
      temp.m256d_f64[0] = 1;
      ^

compilation aborted for test1.cc (code 2)
$ g++ test1.cc -c

我已將此問題報告給英特爾的編譯器工程團隊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM