- 我想知道编译器如何处理 OpenMP 指令,例如 gcc?
例如,在这段代码中
int main(int argc, char *argv[]) { #pragma omp parallel printf("Hello, world.\n"); return 0; }
gcc 的预处理器是否通过将 OpenMP 指令替换为其他代码来修改 C 代码?
预处理之后和组装之前的代码是什么样的?
谢谢并恭祝安康!
您可以进行网络搜索并找到讨论该主题的论文。我讨厌提供链接,因为它们会不断变化,但在这种情况下,这是回答您问题的最简单方法。您可以查看以下两个:
来自另一个世界的事物(或:OpenMP 编译器如何工作?第 1 部分),作者:Michael Klemm
OpenMP 是如何编译的,作者 Barbara Chapman
希望这能回答你的问题。
我不知道第一手资料,但 GCC(或任何编译器)在遇到这些编译指示时不太可能对代码进行预处理。最有可能的是,GCC 只会在内部标记该块,然后生成适当的本机代码。没有中间 C++ 代码。