非常简单的代码,看不出为什么编译器会抛出关于我使用的错误omp atomic capture
// my_class.h
class my_class
{
my_class()
{ }
static int class_int;
static int get_next_int();
};
// my_class.cpp
int my_class::get_next_int()
{
int next_int;
#pragma omp atomic capture
next_int = class_int++;
return next_int;
}
编译器错误:
my_class.cpp: In static member function 'static int
my_class::get_next_int()':
my_class.cpp:2069: error: expected end of line before 'capture'
my_class.cpp:2070: error: invalid operator for '#pragma omp atomic' before '=' token
可能与它有关static
吗?我无法想象为什么...
如果我pragma omp critical
改用,那么它工作正常(没有编译器错误)。
PS我有 #include <omp.h>
所有.h和.cpp。我-fopenmp
像往常一样链接到