最小例子:
// file: main.cpp
#include "pch.h"
int main()
{
std::cout << "test" << std::endl;
return 0;
}
-
// file: pch.h
#include <iostream>
如果我用
编译它,可以正常工作并且符合预期g++ pch.h
g++ main.cpp -Winvalid-pch
但是,一旦我将最后一行更改为:
g++ main.cpp -fopenmp -Winvalid-pch
禁用预编译头的使用:
warning: pch.h.gch: not used because `_REENTRANT' is defined [-Winvalid-pch]
如何在链接到OpenMP时仍然使用预编译的头文件?为什么_REENTRANT定义与使用预编译头完全冲突?
答案 0 :(得分:0)
您必须生成.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