这让我发疯了。
我在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,......这应该是重要的。
答案 0 :(得分:6)
正如您在评论中所说,“fooUser.h”也包含在非C ++文件中,并且 导致编译器错误。头文件不是单独编译的,而是作为包含它们的“编译单元”的一部分编译的。
您应该尝试将C ++声明分隔为包含的头文件 仅来自(Objective-)C ++文件。
作为一种解决方法,您还可以通过
保护C ++声明#ifdef __cplusplus
// …
#endif