Visual Studio 2010 中的 OpenMP 实现似乎有一个严重的错误,不允许将外部变量作为 threadprivate。以下代码无法编译:
文件.c
#include <omp.h>
/* Declaration of external variable. */
extern int My_Var;
#pragma omp threadprivate (My_Var)
void MyFunc(void) { My_Var = 1;}
错误信息是:
error C3053:
'My_Var' : 'threadprivate' is only valid for global or static data tems.
显然,编译器对变量的链接属性感到困惑。
在多个文件中引用全局变量是最常见的。所以这个问题使得threadprivate
指令在任何实际程序中都无法使用。
我想知道是否有技巧来处理这个错误。不幸的是,就我而言,这个问题使我无法完全使用 OMP。
谢谢,
亚历克斯