c++ - 为什么我在 C 中使用 openMP 时无法在 for 循环中定义数据类型?

标签 c++ c for-loop openmp

首先,我使用的是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/

相关文章:

c++ - OpenMP 从并行 for 循环调用并行函数

C++——如何初始化成员函数内的静态变量?

C++ 使用 boost 对字符串进行标记并将标记保存为字符串

c - 错误的文件描述符

c - FAT32:根目录条目

python - 从列表中删除不需要的字符

r - Double For Loop & If Else 语句计算平均值并将它们存储在矩阵中

c++ - 关于 C++ 中内存释放的困惑

c++ - 如何将数据从线程传递到父进程?

c - 程序运行时的近似公式