在iOS预编译头文件</boost>中包含<boost shared_ptr.hpp =“”>时出错

时间:2011-04-11 19:05:39

标签: c++ ios boost shared-ptr precompiled-headers

我正在开发一个iOS应用程序,并且正在使用Boost库中的共享指针。我的应用程序有点粗糙,所以我一直在努力向上倾斜。我想移动这一行:

#include <boost/shared_ptr.hpp>

从单个文件到预编译的头文件将节省一些空间,因为我听说每个包含的shared_ptr重新编译不同的版本,并且不清楚编译器是否正在删除重复项。

当我将这一行移到pch文件时,我得到了大量的编译时错误,其中大部分都是:

error: expected '=', ',', ';', 'asm' or '__attribute__' before 'boost'

我已将.pch文件更改为其信息中的sourcecode.cpp.h文件,但这没有帮助。

思想?

编辑:刚刚确认在我的二进制文件中实际存在已编译的shared_ptr的重复副本!

2 个答案:

答案 0 :(得分:1)

您是否在.m文件或​​.mm文件中包含Boost标头?因为在第一种情况下,编译器将使用Objective-C,在第二种情况下使用Objective-C ++。

答案 1 :(得分:1)

您的项目中可能有C或ObjC来源。

在那种情况下:

#if defined(__cplusplus)
#include <boost/shared_ptr.hpp>
#endif

Xcode(默认情况下)为项目中的每种语言/方言创建一个前缀,如果没有,则仍然是手动#include d。不幸的是,将标题移动到pch只能添加重复项。但是,它可以缩短您的构建时间。