我刚刚使用XCode创建了一个“ C ++标准动态”库项目,并使用LLVM 2.0编译。我注意到PCH文件包含该行 #include <iostream> 但是文件 test.cp 还包括其中 #include <iostream> 陈述。

奇怪的是,通过删除该声明 test.cp, ,构建失败,错误 Semantic Issue – Use of undeclared identifier 'std' 尽管该声明也包括在PCH中。

PCH为什么不起作用?我缺少一个设置吗?我以前从未对他们做过任何事情(因为他们总是只是工作),所以我不确定即使在一个全新的项目中,我不确定什么会导致它不起作用。

有帮助吗?

解决方案

预编译标头用于加速编译。它们没有其他效果,特别是您仍然必须包括所需的标题。

编辑 - 在XCode中,PCH文件实际上是一个前缀标头,恰好已被预编译(默认项目配置)。检查 GCC_PRECOMPILE_PREFIX_HEADERGCC_PREFIX_HEADER 构建设置。

其他提示

删除派生数据(窗口操纵器,项目选项卡,选择您的项目)以使Xcode重建PCH的索引。另外,如果您使用单元测试,则有一个单独的PCH针对UniteSts目标。确保这还包括所需的导入。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top