共用方式為


編譯器錯誤 C7688

'pragma omp atomic': 必須是純量類型的運算式

備註

OpenMP 會將建構中的 #pragma omp atomic 表達式限制為純量類型。

Visual Studio 2022 17.4 版的編譯程序錯誤 C7688 是新的。 在舊版編譯程式中,編譯程式會發出錯誤 C3048

範例

範例程式代碼會顯示針對建構中 #pragma omp atomic 非純量類型所產生的診斷。

// C7688.cpp
// compile using /c /openmp:llvm
struct S { char c; };
S operator+(S, int);

void test()
{
    S s1, s2;
    #pragma omp atomic capture
    { s1 = s2; s2 = s1 + 1; }
}
/*
When built, the compiler emits:

.\C7688.cpp(10,10): error C7688: '#pragma omp atomic': expected an expression of scalar type
    { s1 = s2; s2 = s1 + 1; }
         ^
.\C7688.cpp(10,10): note: type is 'S'
*/

若要解決此問題,請在建構中使用 #pragma omp atomic 純量類型。