【发布时间】:2014-07-27 20:51:27
【问题描述】:
我有一个带有 c++ 代码和类声明的 .mm 文件。我想将它包含在另一个 .m 文件中,但编译器开始在另一个类中给出错误 未知类型名称“类”;你是说“类”吗?
请注意,.m 文件已包含在 .mm 文件中。
例如
啊.h
A.mm -> 这个类有#include "B.h"
B.h -> #include "A.h" 当我尝试导入 A.h 时会出错。
B.m -> #include "A.h" 当我尝试导入 A.h 时会出错。
我尝试在 .m 文件中使用 struct,但实例中没有调用该方法。
任何帮助将不胜感激。
【问题讨论】:
-
在另一个文件中包含 .m 或 .mm 文件很少有好处。与在常规 C 中包含 .c 相同——这是在非常特殊的情况下完成的,但如果你试图在“正常”情况下这样做,那么你做错了什么。这就是为什么有 .h 文件的原因。 (如果你不知道这一点,你就不应该在 Objective-C 中编程——首先学习普通的旧 C。)
-
...Objective-C 根本不懂 C++,所以不仅是一种不寻常的技术,而且是浪费时间。
-
如果包含 c++,您的 .m 将无法包含 .mm 的标头。您将需要制作一个仅包含 objc 的标头以包含,并将 c++ 部分保留在 .mm 或另一个 .h 中。
-
如果没有向我们展示代码和错误,请不要告诉我们您收到错误。
-
如果您有一个包含仅 C++ 项目的 .h 文件,当它包含在非 C++ 模块中时,您需要使用 #ifdef 跳过这些项目。您可以测试 C++ 的标准 #define。
标签: c++ objective-c objective-c++