混合Objective-C和C ++时,未知类型名称'class'

时间:2014-02-26 07:52:58

标签: objective-c objective-c++

这让我发疯了。

我在foo.h文件中有一个C ++类声明。

class foo // error marks are here
{
};

当我在 fooUser.mm 文件中#include/#import此标头时,它会进行编译。当我在 fooUser.h 文件中#include/#import时,它没有,编译错误。

Unknown type name 'class'; did you mean 'Class'?
Excpected ';' after top level declarator.

我正在使用XCode 4.2,LLVM编译器3.0,......这应该是重要的。

1 个答案:

答案 0 :(得分:6)

正如您在评论中所说,“fooUser.h”也包含在非C ++文件中,并且 导致编译器错误。头文件不是单独编译的,而是作为包含它们的“编译单元”的一部分编译的。

您应该尝试将C ++声明分隔为包含的头文件 仅来自(Objective-)C ++文件。

作为一种解决方法,您还可以通过

保护C ++声明
#ifdef __cplusplus
// …
#endif