这是一个极小的案例.在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,那么错误就会消失.
如果我用int替换std :: vector,则错误消失.
如果我放一个;在#pragma下面的一行上,错误就消失了.
最佳答案 对“为什么不编译?”这一问题的简明回答.是“它是一个编译器错误”.错误报告:
https://connect.microsoft.com/VisualStudio/feedbackdetail/view/2420614
已被关闭为“已修复”….“此项目已在本产品的当前版本或即将发布的版本中修复[Visual Studio 2015]”.