Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
"переменная": переменная в предложении private не может быть редукционной переменной в охватывающем контексте
Переменная, используемая в предложении reduction параллельной директивы, не может быть указана в предложении private в директиве распределения рабочей нагрузки, которая привязывается к параллельной конструкции.
Следующий пример приводит к возникновению ошибки C3038:
// C3038.cpp
// compile with: /openmp /c
int g_i, g_i2;
int main() {
int i;
#pragma omp parallel reduction(+: g_i)
{
#pragma omp for private(g_i) // C3038
// try the following line instead
// #pragma omp for private(g_i2)
for (i = 0; i < 10; ++i)
g_i += i;
}
}