Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
"
pragma omp atomic": uma expressão esperada de tipo escalar
Comentários
OpenMP restringe expressões em constructos #pragma omp atomic para tipo escalar.
O erro do compilador C7688 é novo no Visual Studio 2022 versão 17.4. Nas versões anteriores do compilador, o compilador emitia o erro C3048.
Exemplo
O código de exemplo mostra o diagnóstico gerado para tipos não escalares em #pragma omp atomic constructos.
// 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'
*/
Para resolver esse problema, use tipos escalares em #pragma omp atomic constructos.