我刚刚使用Xcode创建了一个“C ++标准动态”库项目,并使用LLVM 2.0编译。我注意到PCH文件包含行#include <iostream>
,但文件 Test.cp 也包含#include <iostream>
语句。
奇怪的是,通过删除 Test.cp 中的语句,构建失败并显示错误Semantic Issue – Use of undeclared identifier 'std'
,尽管该语句也包含在PCH中。
为什么PCH不起作用?我缺少一个设置吗?我之前从未做过任何事情(因为他们总是工作)所以我不确定是什么导致它无法工作,即使是一个全新的项目。
答案 0 :(得分:1)
删除派生数据(Window-Organizer,Projects选项卡,选择项目)让XCode重建PCH的索引。 此外,如果使用单元测试,则UnitTests目标有一个单独的PCH。确保这还包括所需的导入。
答案 1 :(得分:-1)
预编译头文件用于加速编译。它们没有任何其他效果,特别是您仍然需要在您需要的地方包含标题。
编辑 - 在Xcode中,pch文件实际上是一个恰好预编译的前缀头(使用默认项目配置)。检查GCC_PRECOMPILE_PREFIX_HEADER
和GCC_PREFIX_HEADER
构建设置。