如果链接到openmp,如何将预编译头与gcc一起使用

如果链接到openmp,如何将预编译头与gcc一起使用,gcc,g++,openmp,precompiled-headers,Gcc,G++,Openmp,Precompiled Headers,最简单的例子: // file: main.cpp #include "pch.h" int main() { std::cout << "test" << std::endl; return 0; } 但是,一旦我将最后一行更改为: g++ main.cpp -fopenmp -Winvalid-pch 已禁用预编译标头的使用: warning: pch.h.gch: not used because `_REENTRANT' is defined

最简单的例子:

// file: main.cpp
#include "pch.h"

int main()
{
    std::cout << "test" << std::endl;
    return 0;
}
但是,一旦我将最后一行更改为:

g++ main.cpp -fopenmp -Winvalid-pch
已禁用预编译标头的使用:

warning: pch.h.gch: not used because `_REENTRANT' is defined [-Winvalid-pch]

链接到OpenMP时,如何仍使用预编译头?为什么可重入定义与使用预编译头冲突?

您必须生成.pch并使用相同的标志编译源代码
-fopenmp
表示
#pragma omp
-pthread

g++ -fopenmp pch.h
g++ main.cpp -fopenmp -Winvalid-pch
或者至少

g++ -pthread pch.h
g++ main.cpp -fopenmp -Winvalid-pch
g++ -fopenmp pch.h
g++ main.cpp -fopenmp -Winvalid-pch
g++ -pthread pch.h
g++ main.cpp -fopenmp -Winvalid-pch