如何解决为什么 clang 不使用预编译头文件?
// test.hpp
#include <iostream>
// test.cpp
#include "test.hpp"
int main(){std::cout << "hello world" << std::endl;}
让我们预编译头文件:
clang++ -c test.hpp
让我们使用标题
clang++ test.cpp -H
输出显示它没有使用标题,因为没有!出现在 test.hpp 之前(就像使用 g++ 一样):
. ./test.hpp
.. /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/iostream
... /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h
.... /usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/os_defines.h
..... /usr/include/features.h
这是为什么?
解决方法
这(似乎)有效:
clang++ -x c++-header test.hpp -o test.hpp.pch
clang++ -include test.hpp test.cpp
选项 -H 似乎没有在 clang++ 中使用,因为将 -H 添加到上面的第二行不会显示任何内容。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。