Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
未找到xcode 4.6 iostream文件错误? 我遇到了一个关于头文件中没有找到的IoSoW文件的问题。我在我的项目中添加了一个C++文件,头文件也默认包含了一些宏定义,包括IoStasefile作为 #ifndef __ObjectiveCPlus__File__ #define __ObjectiveCPlus__File__ #include <iostream> #endif \ifndef\uu ObjectiveCPlus\uu文件__ #定义_ObjectiveCPlus__文件__ #包括 #恩迪夫_C++_Iphone_Iostream - Fatal编程技术网

未找到xcode 4.6 iostream文件错误? 我遇到了一个关于头文件中没有找到的IoSoW文件的问题。我在我的项目中添加了一个C++文件,头文件也默认包含了一些宏定义,包括IoStasefile作为 #ifndef __ObjectiveCPlus__File__ #define __ObjectiveCPlus__File__ #include <iostream> #endif \ifndef\uu ObjectiveCPlus\uu文件__ #定义_ObjectiveCPlus__文件__ #包括 #恩迪夫

未找到xcode 4.6 iostream文件错误? 我遇到了一个关于头文件中没有找到的IoSoW文件的问题。我在我的项目中添加了一个C++文件,头文件也默认包含了一些宏定义,包括IoStasefile作为 #ifndef __ObjectiveCPlus__File__ #define __ObjectiveCPlus__File__ #include <iostream> #endif \ifndef\uu ObjectiveCPlus\uu文件__ #定义_ObjectiveCPlus__文件__ #包括 #恩迪夫,c++,iphone,iostream,C++,Iphone,Iostream,但在这一行,我在include行得到了错误 我在谷歌上搜索了很多,找到了各种各样的答案,但是没有人能纠正我的错误。 请帮忙 谢谢 头文件中不需要,请将其放入.cpp文件中。您没有在头文件中引用iostream库中的任何内容,使用该库更多的是一个实现细节 为什么? 我相信UIAppDelegate会导入UIViewController.h,其中包括MathUtils.h。因为UIAppRead的实现是在.m文件中,它是为Objto-C编译的,并且这个链(包括基于头文件的)包含了C++的内容。因此

但在这一行,我在include行得到了错误

我在谷歌上搜索了很多,找到了各种各样的答案,但是没有人能纠正我的错误。 请帮忙 谢谢

头文件中不需要
,请将其放入.cpp文件中。您没有在头文件中引用iostream库中的任何内容,使用该库更多的是一个实现细节

为什么? 我相信UIAppDelegate会导入UIViewController.h,其中包括MathUtils.h。因为UIAppRead的实现是在.m文件中,它是为Objto-C编译的,并且这个链(包括基于头文件的)包含了C++的内容。因此,Objective-C部分无法找到
,因为该库在纯Obj-C中不存在

将它放在.cpp文件中会将其限制为一个编译单元,即MathUtils单元。将它包含在头文件中,它包含在所有编译单元中,它依赖于使用它的任何东西,这可能不是客观的C++。 替代解决方案
<>你可以把整个项目都作为目标C++(在这种情况下,通过改变UIAP委托)到UIAP委托(mm),这意味着C++可以贯穿始终。我不喜欢这种方法,它可以掩盖糟糕的编码实践。

我从另一篇文章中得到了解决方案:

用.mm扩展名而不是.m重命名实现文件将解决此问题


哪些源文件包含该头文件?不是
.m
吗?这很有帮助,thx~,但我不知道为什么。这是一种惯例(将UIAppDelegate.m更改为UIAppDelegate.mm)?@Joey.m文件表示Obj-C文件。mm表示Obj-C++文件。这并不是一个惯例,但它是强制性的,这取决于你所使用的语言偏好。@Steven Thx供你解释。你从哪里得到这个答案的?请提供一个链接到来源,请,你能解释为什么这解决了这个问题,这是另一个帖子?