为什么不编译? (VC ++ 2015,#pragma omp flush)

时间:2016-02-23 04:07:58

标签: c++ visual-c++ openmp

这是一个极小的案例。在Visual C ++ 2015上使用“/ openmp”进行编译。

#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下面的一行上,则错误就会消失。

1 个答案:

答案 0 :(得分:1)

对“为什么不编译?”这个问题的简明回答。是“它是一个编译器错误”。错误报告: https://connect.microsoft.com/VisualStudio/feedbackdetail/view/2420614 已被关闭为“已修复”....“此项目已在本产品的当前版本或即将发布的版本中修复[Visual Studio 2015]”。