iPhone错误:预期'=',',',';','asm'或'__attribute__'之前''富'

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

error: expected '=', ',', ';', 'asm' or '__attribute__' before 'foo'什么error: expected '=', ',', ';', 'asm' or '__attribute__' before 'foo'是什么意思?

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

任何关于如何debugging的build议?

TIA!

编辑:我仍然无法想象出来。 我真的只是从示例中的文件复制到另一个项目。 有人可以检查出来吗? SpeakHerePort.zip和原文在这里SpeakHere.zip

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

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

将所有文件命名为.mm,然后将所有代码编译为Objective C ++

在我的情况下,问题中的.h和.m是用正常目标构build的,应用程序也可以运行。

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

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

注意到这个错误只发生在NSString *上,例如,

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

经过上面的分析并稍微rest一下,最终通过将以下导入添加到.h – "Foundation/Foundation.h"

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

这可能不适用于这种确切的情况,但我也有这个确切的错误,这是由一个错误的前向声明造成的。 在Objective-C中,确保你的前向声明以@符号开始 – 例如

 @class MyClass; 

我们这些仍然使用C ++的自动驾驶仪将会忘记@,看到XCode已经将类作为保留关键字来突出显示,并且认为一切都和世界一致。 不是这样。

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

我有一个类似的情况,上面的一些职位。 我写了一个基于Audio Queue Services文档中的例子的C ++类,并且在testing项目中有这个编译问题。 这个post帮了大忙。

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