首先,我使用的是Visual Studio 2015,我已经配置好了openMP环境(我保证没问题)。
#pragma omp parallel for
for(int i= 0; i < 10; i++)
printf("%d ", i);
printf("\n");
上面的代码会失败,但是如果我像这样修改一点:
int i;
#pragma omp parallel for
for(i= 0; i < 10; i++)
printf("%d ", i);
printf("\n");
程序将正确运行。
而且,当我使用C++(将第一段代码修改为.cpp)时,程序也可以正常运行。
为什么会这样??
最佳答案
要在 for 循环的第一个子句内声明变量,您必须使用 C++ 编译器或不超过 17 年的 C 编译器。在 1999 年之前,您不能在 C 中的循环内声明变量。
设置为 C 编译器的 Visual Studio 仅在一定程度上符合已有 26 年历史的 C 标准。它既不符合当前也不符合 1999 年以前的 C 标准。
改用现代 C 编译器来解决这个问题。
关于c++ - 为什么我在 C 中使用 openMP 时无法在 for 循环中定义数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36034921/