1

我正在开发一个 iOS 应用程序,并且正在使用 Boost 库中的共享指针。我的应用程序有点笨重,所以我一直在努力精简它。我认为移动这条线:

#include <boost/shared_ptr.hpp>

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

当我将此行移至 pch 文件时,会出现大量编译时错误,其中大部分是:

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

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

想法?

编辑:刚刚验证在我的二进制文件中实际上有已编译的 shared_ptr 的重复副本!

4

2 回答 2

1

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

于 2012-01-31T08:20:11.733 回答
1

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

在这种情况下:

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

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

于 2012-01-31T08:26:06.800 回答