[英]OpenMP 'unused variable' compiling error
我試圖編寫一個使用openmp進行並行化的c ++程序。 不幸的是,我收到了一個我不理解的編譯錯誤。 我列出了g ++命令,有問題的代碼行和錯誤消息。 如果我錯過重要信息,請告訴我。
g++ -o Pogramm -Wall -fopenmp Programm.cpp
#pragma omp parallel
int id,nths,tnbr;
id=omp_get_thread_num();
nths=omp_get_num_thread();
Tree.cpp:52:7:警告:未使用的變量'id'[-Wunused-variable]
錯誤:在此范圍內未聲明'id'id = omp_get_thread_num();
有人可以告訴我為什么不聲明'id'ist嗎?
根據您的代碼,並行區域的范圍(即您定義id的范圍)僅包括后續行,即您定義id的行。 因此,在外部使用id變量時,會出現未定義的變量錯誤。 此外,您還收到未使用的id變量警告,因為未在並行區域(可以使用該區域)中使用它。
很可能您只是忘了添加花括號來擴大將要並行化的范圍,即
#pragma omp parallel
{
int id,nths,tnbr;
id=omp_get_thread_num();
nths=omp_get_num_thread();
...
}
一個最小的工作示例是:
#include<iostream>
#include<omp.h>
using namespace std;
int main() {
#pragma omp parallel
{
int id,nths,tnbr;
id=omp_get_thread_num();
nths=omp_get_num_threads();
cout << "id, nths: " << id << nths << endl;
}
return 0;
}
可以成功編譯,例如使用g ++ v.8.5.5。
g++ main.cpp -fopenmp -Wall
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.