当我尝试使用boost标头部署gcc生成的预编译标头时,请帮助我warning: pch.hpp.gch: not used because '__STDC_IEC_559__' not defined
出现吗?
这是我的玩具模型。
档案pch.hpp
:
#include <vector>
#include <string>
#include <iostream>
#include <boost/bind.hpp>
及其互补的pch.cpp
#include "pch.hpp"
要生成预编译头,我调用以下命令:
g++ -std=c++11 -c -x c++-header pch.cpp -o pch.hpp.gch
,
其中gcc
的版本为4.8.2
。
现在,有bla.cpp
文件,我希望最终使用预编译的头文件:
#include "pch.hpp"
int main() {
#ifdef __STDC_IEC_559__
std::cout << "__STDC_IEC_559__ is defined by the compiler as " << __STDC_IEC_559__ << std::endl;
#else
std::cout << "__STDC_IEC_559__ is NOT defined by the compiler as " << __STDC_IEC_559__ << std::endl;
#endif
std::vector<std::string> vs {"One", "Two", "Three"};
for (auto&& v : vs) std::cout << v << ", ";
std::vector<int> vi {1,2,3};
for (auto&& v : vi) std::cout << v << ", ";
std::cout << '\n';
return 0;
}
我用这个命令编译它:
g++ -std=c++11 -Winvalid-pch -H bla.cpp
。
输出结果为:
bla.cpp:1:19: warning: pch.hpp.gch: not used because `__STDC_IEC_559__' not defined [-Winvalid-pch]
#include "pch.hpp"
^
x pch.hpp.gch
. pch.hpp
...
因此,代码编译,但未部署预编译头。如果我运行已编译的代码,我会看到以下输出:
__STDC_IEC_559__ is defined by the compiler as 1
One, Two, Three, 1, 2, 3,
有没有办法利用我的预编译头?我必须以不同的方式生成它吗?..
注意如果我的pch.hpp中没有boost头,即只有来自std lib的那个,则部署预编译头。
提前谢谢! 奥莱克西