【问题标题】:iphone error when unit testing: Expected '=', ',', ';', 'asm' or '__attribute__' before '*' token单元测试时的 iphone 错误:在 '*' 标记之前需要 '='、','、';'、'asm' 或 '__attribute__'
【发布时间】:2011-09-01 07:56:32
【问题描述】:

当我尝试构建 (Build->build) 单元测试时,我收到以下错误。我的单元测试是一个逻辑测试(它不在设备上运行)。

可能与我的问题有关的事情是: 我正在使用 libxml2 和它周围的包装器(我在 cocoawithlove 找到的)。

这个包装器定义了一些 C 函数(它不是带有 @interface@implementation 的 Objective C 类)。 我正在使用的功能(以及发生错误的功能)是

NSArray *PerformHTMLXPathQuery(NSData *document, NSString *query);

奇怪的是,当我构建我的应用程序并在模拟器中运行它时,一切都运行良好。但是,当我尝试运行单元测试时,出现此错误:

/Users/me/XCodeWorkspace/MyProject/XPathQuery.h:15:0 Expected '=', ',', ';', 'asm' or '__attribute__' before '*' token in /Users/me/XCodeWorkspace/MyProject/XPathQuery.h

这里有一些相关的问题,但似乎都没有解决我的问题。 尤其是: iphone error: expected '=', ',', ';', 'asm' or '__attribute__' before ' 'foo' 但是这里应该包含一些 c++ 代码。

感谢您的帮助。

【问题讨论】:

  • 您也可以使用 LLVM 代替 GCC。更好更清晰的错误消息!

标签: iphone objective-c unit-testing


【解决方案1】:

在我的例子中,有问题的 .h 和 .m 使用常规目标构建得很好,并且应用程序也可以运行。

但是,在将文件子集移动到静态库目标下后,在构建静态库时会出现此编译错误。

卡了一段时间并尝试了from another post here 的技术,不幸的是它们对我的情况没有帮助。

请注意,此错误仅发生在 NSString* 上,例如,

  • extern double const kTimeout; // 很好
  • extern NSString* const kImageType; // 编译错误

经过上面的分析&一点小突破,最终问题解决了,在.h文件中加入如下导入——“Foundation/Foundation.h”

希望对你有帮助。

【讨论】:

    【解决方案2】:

    很可能编译器正在尝试将您的文件编译为 C 代码而不是 Objective-C 代码。它看到了一些奇怪的东西,比如 NSString,它不是 C 语言的一部分,所以它在向你吐槽。

    如果您将文件更改为 Objective-C 或 Objective-C++,它应该可以工作。 (您可以通过获取文件信息并更改源类型来实现)

    【讨论】:

    • 我的文件类型设置为 Objective-C。当我将文件类型更改为 C(并选择我的应用程序作为活动目标)时,我确实得到了同样的错误。但是当我进行工作设置(文件类型设置为objective-C)并将目标切换到我的LogicTests.octest时,我收到了这个错误。我还收到“警告:没有规则来处理架构 i386 的 sourcecode.c.h 类型的文件 '$(PROJECT_DIR)/XPathQuery.h'。”有人有想法吗?谢谢你的一切!
    • 我尝试将这两个文件(可以在:cocoawithlove.com/2008/10/… 找到)包含到一些示例项目中。当我包含到 iphoneUnitTests 示例项目中时,我在点击构建时遇到了同样的错误。但是,当我将它们包含在没有测试的项目中时,编译时就没有这样的错误。单元测试(不在设备上运行的逻辑测试)与编译相关联......有没有机会包含这些包装文件?或者:我是否必须用方法而不是函数将它们重写为真正的 Objective-C 文件??
    【解决方案3】:

    在尝试更改文件的文件类型后(我尝试了几种不同的方法,但都没有帮助),我决定用方法而不是函数将这些文件重写为 Objective-C 文件。 这解决了我的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多