Вот минимальный случай. Компиляция с "/ OpenMP" на Visual C++ 2015.Почему это не компилируется? (VC++ 2015, #pragma omp flush)
#include <vector>
void main()
{
bool foo = false;
#pragma omp flush (foo)
std::vector<int> bar;
}
я получаю:
C2146 syntax error : missing ';' before identifier 'bar'
C2275 'std::vector<int,std::allocator<_Ty>>' : illegal use of this type as an expression
C2065 'bar' : undeclared identifier
Если я закомментируйте #pragma
, ошибка уходит.
Если я заменил std::vector
на int
, ошибка исчезнет.
Если я положил ;
на линию, расположенную ниже #pragma
, ошибка исчезнет.
Вам не нужно включать 'omp.h', чтобы использовать прагмы? У меня нет ВС со мной прямо сейчас, я могу проверить это завтра утром :-) –
Я скопировал его в свой VS2015, и он скомпилирован и прошел нормально. –
@triple_r Просто добавлено '#include', ошибка все еще существует. –
Chungzuwalla