头文件中的奇怪语法错误

时间:2013-09-30 13:09:40

标签: objective-c cocoa

我有一个包含带属性和方法的接口的头文件(让我们称之为E.h),Xcode通知我这个头字段内的语法错误,这没有任何意义,因为E.h不包含任何错误。 这些错误仅在某些条件下出现:

E.h已包含在A.h中,并且没有错误。

当E.h不包含在B.m中时,没有错误并且编译得很好,但如果我将其包含在B.m中,则会出现错误。 (B.m不要使用E.h的任何代码)

附加信息:B.m包括B.h,然后是E.h.

我没有找到包含源代码的相关信息,因为它代表了数千行,我不会要求您分析它。 我需要一些提示,了解原因和起点。

提前致谢。

2 个答案:

答案 0 :(得分:0)

通过使用Xcode中的“显示预处理”选项,我发现名为@property (retain) NSString *MY_STRING;的E.h中的属性已替换为@property (retain) NSString *@"My String"。似乎有一个define MY_STRING @"My String"包含在B.h中包含的不同的头文件中,它本身包含在B.h之前的B.m中。很难发现!当天的课程:永远不要用大写写出你的变量。

答案 1 :(得分:-1)

在C ++中,这可行,也许会对你有帮助:

在文件E.h

#ifndef __ECLASS__
#define __ECLASS__

<here original declarations from E.h>

#endif