2009-06-13 84 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"

相關問題