MSVC错误C3015(循环的OpenMP错误),但不是一个明显的错误
MSVC Error C3015 (bad OpenMP for loop) but not an obvious mistake
我正在Visual Studio 2022中编译一些C++代码。我使用/std:c++17 /O2 /permissive- /openmp:llvm /MP /arch:AVX2
作为编译器设置。我得到了编译器错误
C3015 initialization in OpenMP 'for' statement has improper form
然而,我觉得这可能是一个编译器错误(可能是/openmp:llvm
(,因为我甚至无法使最简单的OpenMP for循环在这种情况下工作。for循环位于lambda内部,lambda是在位于头文件中命名空间(任何类或结构外部(的模板函数内部定义的。类似于:
namespace Foo {
template <typename Func>
void f(Func work, const int beta, bool check = false) {
auto mylambda = [](std::vector<double>& y, double a) {
#pragma omp parallel for
for (int test = 0; test < 0; test++)
printf("Hello C3015n");
};
work();
}
}
我在过去尝试使用长(有符号/无符号(循环变量时见过C3015,但事实并非如此。此外,确切的代码在gcc
下编译得很好,所以这是MSVC行为的特定部分。在这个头文件中(在其他函数等中(还有其他OpenMP for循环不会引发这个错误。
我只是想知道我是否犯了一些使用错误,或者是否有一些变通方法。或者,如果这是一个不可避免的编译器错误,至少如何报告这样的事情并修复它。
正如@Jerry Coffin在评论中所建议的,这是一个编译器错误,是x64 msvc 19.31和19.32之间的回归。事实证明,这个错误已经报告给了微软,并且有一个修复程序正在等待发布(我想在下一个小的MSVC更新中(。
相关文章:
- C++,我收到一个无法理解的编译器错误
- VSCode-有一个红色下划线,但程序构建和运行正确,并且出现配音错误
- 删除映射和分割错误中的一个过去结束元素
- 为什么我的 heap.h 文件给我一个LNK2001错误?
- 写一个分数类,我无法弄清楚这些错误
- 我在 .h 中有一个枚举类,并且在.cpp错误中有一个运算符重载:与"运算符<<不匹配
- 一个标头库中的错误
- 给定一个整数数组,需要在Max_Heap上运行操作。得到错误"segmentation fault",有什么想法吗?(C++)
- 使用Visual Studio在虚幻引擎中创建一个新的类c ++给了我太多的错误
- 我正在尝试制作一个自平衡机器人,但编译时存在错误。我不知道如何解决它
- 试图修复一个错误,该错误不会让我开始编程其余部分
- MSVC 无法根据模板参数进行数学运算,这是一个错误吗?
- 我正在尝试一个傻瓜 C++ 练习,我遇到了一个错误,说类 'GraduateStudent' 没有任何名为 'advisor' 的字段
- 零四元数和任何向量都不为零的特征积,这是一个错误吗?
- 我有一个线程 1:EXC_BAD_ACCESS(代码 = 1,地址 = 0x8)错误.我认为这是由于内存管理不好.我可以
- 两个线程一个使用流 Api,另一个线程创建文件失败并出现错误ERROR_SHARING_VIOLATION
- 在使用堆栈为下一个最大数字编写代码时面临 SIGSEGV(分段错误)
- LNK2019错误一个DLL链接到MFC DLL
- 错误:一个声明中有多个类型
- 带有两个运算符的C++11模糊错误(一个左值-第二个右值).底部的