我正在开发一个iOS应用程序,并且正在使用Boost库中的共享指针。我的应用程序有点粗糙,所以我一直在努力向上倾斜。我想移动这一行:
#include <boost/shared_ptr.hpp>
从单个文件到预编译的头文件将节省一些空间,因为我听说每个包含的shared_ptr重新编译不同的版本,并且不清楚编译器是否正在删除重复项。
当我将这一行移到pch文件时,我得到了大量的编译时错误,其中大部分都是:
error: expected '=', ',', ';', 'asm' or '__attribute__' before 'boost'
我已将.pch文件更改为其信息中的sourcecode.cpp.h文件,但这没有帮助。
思想?
编辑:刚刚确认在我的二进制文件中实际存在已编译的shared_ptr的重复副本!
答案 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只能添加重复项。但是,它可以缩短您的构建时间。