[英]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.