2013-04-07 84 views
1

返回字符串我試圖聲明功能在頭文件返回字符串,因爲我將這個從目標c。基本上這會工作,不是嗎?聲明函數在C++

std::string myFunction(); 

但它會拋出錯誤消息說「預期';'在頂級聲明器之後「,搜索了很多,每個人都建議在頭文件中放入#include,我試過這個,但是它不起作用,這次它會拋出另一個錯誤消息」'string'file not found「。

有另一個函數返回雙,沒有問題的。

double doSomething(double a); 

-

#include <string> 

不起作用它拋出錯誤消息說「未找到 '字符串' 文件」。試圖創建新的項目,以防萬一礦可能被損壞,但它不工作,我應該把東西放在搜索路徑等?

enter image description here

最後我做到了。 解決方案:已將「編譯源代碼」設置更改爲Objective-C++,它是Build Settings/Apple LLVM Compiler 4.2下的工具,其工作原理類似於魅力。

+0

你可以向我們展示你嘗試的'#include'嗎? – 2013-04-07 15:17:22

+2

如果你的編譯器沒有找到'',那麼你要麼沒有使用C++編譯器(例如gcc可以像純C編譯器一樣依賴於它的參數),要麼你的IDE安裝錯誤或者配置錯誤。在您的機器上手動查找「string」文件(它沒有文件名後綴),並檢查IDE中配置的包含文件路徑。 – 2013-04-07 15:26:13

+0

#ifdef __cplusplus extern「C」.....工程,這就是爲什麼假設它不是編譯器問題。但我注意到了一些。如果它是純粹的C++項目沒有問題,當我將C++頭文件鏈接到Obj-c時,它開始拋出關於的錯誤。 – mohacs 2013-04-07 16:32:01

回答

3

至少,您必須包含C++標準庫頭文件string,其中聲明std::string類(實際上,它是類模板的類型定義,但這是另一回事)。

#include <string> 

std::string myFunction(); 

您還應確保在您自己的標題中使用include guards

1

你錯過了頭文件:

#include <string> 
1

你必須記住,ObjC文件在C未C++建,如果你想使用C在Objective-C++文件,你需要改變的延伸將ObjC文件從.m改爲.mm以使其成爲ObjC++文件,否則就像試圖將C++頭文件包含在C文件中一樣。

+0

是的,我將擴展名更改爲.mm – mohacs 2013-04-07 15:47:14