#pragma 在 OpenMP 中的用途是什么?

What is #pragma used for in OpenMP?

我想了解OpenMP#pragma的含义和用法,我有这个小示例代码:

int main()
{
omp_set_num_threads(16);
#pragma omp parallel
{
printf( "Hello, World!\n" );
}
return 0;
}

我不明白pragma是干什么用的,那是我第一次看到它被用在C中。我知道整行是表示并行部分的开始。任何帮助将不胜感激。

pragma 指令用于访问特定于编译器的预处理器扩展。使用以下格式:

#pragma compiler specific extension

这意味着您要告诉编译器扩展该指令并将其转换为使用所需扩展功能的可运行代码。

这完全取决于所使用的编译器,因此,如果您使用的是非常旧的 GCC/Clang,您可能无法使用 OpenMP 的所有功能,或者可能 none 根本无法使用。

如果您想更深入地了解 #pragma 主题,您可以点击以下链接:

  1. GNU GCC C++ Docs
  2. CProgramming
  3. Microsoft Docs
  4. Wikipedia