我正面临一个问题,即头文件中找不到iostream文件。我刚在我的项目中添加了一个c ++文件,默认情况下还包含一个头文件,其中包含一些宏定义并包含iostream文件
#ifndef __ObjectiveCPlus__File__
#define __ObjectiveCPlus__File__
#include <iostream>
#endif
但是在这一行,我在包含行收到错误
我谷歌很多,并找到了各种类型的答案。但没有人能够纠正我的错误。 请帮忙 谢谢!
答案 0 :(得分:4)
您的头文件中不需要<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 ++。我不喜欢这种方法,它可以掩盖糟糕的编码实践。
答案 1 :(得分:-1)
我从另一篇文章中得到了解决方案:
使用.mm扩展名而不是.m重命名实施文件将解决问题。