2009-06-13 56 views
20

我试图将讲述示例移植到另一个应用程序中,并遇到问题。我复制了所有的文件和所有的框架,但由于某种原因,我收到了一堆我从未见过的编译错误,因此不知道该怎么做。唯一的区别是,我不是起诉IB,所以我不得不稍微改变它。iPhone错误:预计'=',',',';','asm'或'__attribute__''foo'之前

是什么error: expected '=', ',', ';', 'asm' or '__attribute__' before 'foo'意思?......我得到这个错误多次为不同的文件

在我的情况的第一个错误是在“MeterTable” ..包括<stdlib.h><stdio.h><math.h>类指点。但这些文件似乎进口罚款(如果我删除他们,我得到更多的错误)

任何关于如何调试的建议?

TIA!编辑: 我仍然无法弄清楚。我简直就是将示例中的文件复制到另一个项目中。有人可以检查出来吗? SpeakHerePort.zip和原件在这里SpeakHere.zip

+0

我们真的需要看到surrou寻找代码。错误发生在“MeterTable”之前。这只是编译器放弃的地方。 – UncleO 2009-06-13 16:33:46

+0

由于我不知道究竟是什么原因造成的错误,我刚刚发布了项目 – dizy 2009-06-17 22:26:15

+0

看看这个答案是否有帮助:[http://stackoverflow.com/questions/990578/expected-asm-or-attribute-before-crendercontext]( http://stackoverflow.com/questions/990578/expected-asm-or-attribute-before-crendercontext) – 2009-06-13 19:09:22

回答

40

你的问题是你正在编译SpeakHerePortAppDelegate.m,它是一个Objective C文件,但它间接包含了MeterTable.h,它是一个C++头文件。

将它重命名为SpeakHerePortAppDelegate.mm(double m),以便将其编译为Objective C++,并解决您的问题。

名称的所有文件.mm,然后所有的代码将被编译成目标C++

0

这意味着你有语法错误。如果您粘贴有问题的代码,则调试起来会更容易。

1

这听起来像一个未完成的声明,可能在头文件中。在Xcode中使用⇧⌘F(编辑▸查找▸Find In Project ...)查找所有项目文件中的'foo'(或任何实际符号),和/或检查包含MeterTable所在的标题声明。有时编译器会对错误的实际位置感到困惑,因为头文件经常被#imported到其他文件中,所以问题可能会在多个位置出现。

1

这可能不会适用于这个确切的情况,但我也有这种确切的错误,这是一个糟糕的前锋引起宣言。在Objective-C中,确保您的前向声明以@符号开头 - 例如

@class MyClass; 

我们这些仍然从C++自动驾驶仪会忘记@,看到的XCode强调阶级作为一个保留关键字,并认为一切都很好,与世界同步。不是这样。

0

我有一个类似的情况,上面的一些帖子。我根据Audio Queue Services文档中的示例编写了一个C++类,并在测试项目中出现了此编译问题。这篇文章帮助了很多。

今天,我将C++类整合到我的项目中,并再次出现构建错误。在我的场景中,我还必须为正在调用我的C++类的objective-c类设置类型(使用“Get Info”窗口)至sourcecode.cpp.objcpp

2

在我的情况下,.h和。有问题的m和普通目标一起构建,而且应用程序也可以运行。

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

被卡住了一段时间&尝试了上述技术,不幸的是他们没有帮助我的情况。

指出,只有对的NSString *发生这个错误,对于如

  • extern double const kTimeout; // fine
  • extern NSString* const kImageType; // compile error

经过上面的分析&一点突破,最终的问题是通过将解决下面导入到.h - "Foundation/Foundation.h"

相关问题