我面临一个关于在头文件中找不到 iostream 文件的问题。我刚刚在我的项目中添加了一个 c++ 文件,一个头文件也默认包含一些宏定义,并将 iostream 文件包含为
#ifndef __ObjectiveCPlus__File__
#define __ObjectiveCPlus__File__
#include <iostream>
#endif
但在这一行,我在包含行出现错误
我用谷歌搜索了很多,并找到了各种类型的答案。但是没有人能够纠正我的错误。请帮忙谢谢!
你不需要<iostream>
在你的头文件中,把它放在你的 .cpp 文件中。您没有在头文件中引用 iostream 库中的任何内容,使用此库更多的是实现细节。
我相信 UIAppDelegate 导入 UIViewController.h,其中包括 MathUtils.h。因为 UIAppDelegate 的实现在一个 .m 文件中,它是为 Objective-C 编译的,并且这个包含链(全部基于头文件)包含 C++ 的东西。因此,Objective-C 部分无法找到<iostream>
,因为纯 Obj-C 中不存在该库。
将其放入您的 .cpp 文件中会将其限制为一个编译单元,即 MathUtils 单元。将它放在头文件中会将它包含在所有编译单元中,这些编译单元依赖于使用它的任何东西,可能不是 Objective C++。
您可以将整个项目作为 Objective C++(在这种情况下,通过将 UIAppDelegate.m 更改为 UIAppDelegate.mm),这意味着 C++ 可以在整个过程中使用。我不喜欢这种方法,它可能会掩盖不良的编码习惯。
我从另一个帖子中得到了解决方案:
使用 .mm 扩展名而不是 .m 重命名您的实现文件将解决该问题。