包含 时出错在iOS预编译头文件中
我正在开发一个 iOS 应用程序,并使用 Boost 库中的共享指针。我的应用程序有点笨重,所以我一直在努力精简它。我认为移动这一行:
#include <boost/shared_ptr.hpp>
从单个文件到预编译头文件将为我节省一些空间,因为我听说每次包含shared_ptr都会重新编译不同的版本,并且不清楚编译器是否正在删除重复项。
当我将此行移至 pch 文件时,我收到大量编译时错误,其中大部分是:
error: expected '=', ',', ';', 'asm' or '__attribute__' before 'boost'
我已将 .pch 文件更改为其信息中的 sourcecode.cpp.h 文件,但这还没有帮助了。
想法?
编辑:刚刚验证我的二进制文件中实际上存在已编译的shared_ptr的重复副本!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您的项目中可能有 C 或 ObjC 源代码。
在这种情况下:
Xcode(默认情况下)会为项目中的每种语言/方言创建一个前缀,如果没有,仍然需要手动
#include
。不幸的是,将标头移动到 pch 只能添加重复项。但是,它可以减少您的构建时间。You probably have C or ObjC sources in your project.
In that case:
Xcode (by default) creates a prefix for every language/dialect in your project, and if it doesn't, it's still manually
#include
d. Unfortunately, moving a header to a pch could only add duplicates. It could reduce your build times, however.您是否将 Boost 标头包含在 .m 文件或 .mm 文件中?因为在第一种情况下编译器将使用 Objective-C,在第二种情况下编译器将使用 Objective-C++。
Are you included Boost headers in a .m file or .mm files? Because in the first case the compiler will use Objective-C, in the second case Objective-C++.