3
  1. 我想知道编译器如何处理 OpenMP 指令,例如 gcc?
  2. 例如,在这段代码中

     int main(int argc, char *argv[])
     {
       #pragma omp parallel  
       printf("Hello, world.\n");
       return 0;
     }
    

    gcc 的预处理器是否通过将 OpenMP 指令替换为其他代码来修改 C 代码?

    预处理之后和组装之前的代码是什么样的?

谢谢并恭祝安康!

4

2 回答 2

2

您可以进行网络搜索并找到讨论该主题的论文。我讨厌提供链接,因为它们会不断变化,但在这种情况下,这是回答您问题的最简单方法。您可以查看以下两个:

来自另一个世界的事物(或:OpenMP 编译器如何工作?第 1 部分),作者:Michael Klemm

OpenMP 是如何编译的,作者 Barbara Chapman

希望这能回答你的问题。

于 2011-06-15T14:45:55.067 回答
1

我不知道第一手资料,但 GCC(或任何编译器)在遇到这些编译指示时不太可能对代码进行预处理。最有可能的是,GCC 只会在内部标记该块,然后生成适当的本机代码。没有中间 C++ 代码。

于 2011-06-14T18:33:32.127 回答