xcode 4.6找不到iostream文件错误?

时间:2013-03-08 14:33:16

标签: c++ iphone iostream

我正面临一个问题,即头文件中找不到iostream文件。我刚在我的项目中添加了一个c ++文件,默认情况下还包含一个头文件,其中包含一些宏定义并包含iostream文件

#ifndef __ObjectiveCPlus__File__
#define __ObjectiveCPlus__File__
#include <iostream>
#endif

但是在这一行,我在包含行收到错误

enter image description here

我谷歌很多,并找到了各种类型的答案。但没有人能够纠正我的错误。 请帮忙 谢谢!

2 个答案:

答案 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重命名实施文件将解决问题。