2013-08-26 160 views
0

這裏是我最簡單的C++函數:爲什麼不能編譯這個簡單的C++程序?

#include <string.h> 


void myFunc(void * param) 
{ 
     string command; 
} 

爲什麼沒有編制?

% CC -c -o testFunc.o testFunc.C 
"testFunc.C", line 6: Error: string is not defined. 
1 Error(s) detected. 
+1

儘管名稱中沒有在名稱爲「string」的''頭部中定義的實體, –

+3

你很可能想'#包括'並且使用'std :: string命令'而不是'string command'。此外,我會確保CC是一個C++編譯器,而不是C編譯器。 –

+6

爲什麼倒票 - 它是一個非常好的問題,並帶有明確的答案 – pm100

回答

8

<string.h>是從C和定義像memcmpstrcpy,而不是C++ string C類字符串處理函數。在標準C++中,標題爲<string>,類string位於命名空間std中。

+1

-1:是標準的C++(不是說推薦使用) –

+0

@ThomasEding:好的。我腦海中的那個標題是'':)修正。 –

+1

我認爲你有一個額外的「和」在開頭附近:-) – UpAndAdam

6

它不是一種編譯完全原因,它告訴你:

Error: string is not defined. 

變化<string.h><string>

還要確保您使用的是正確的名稱空間。你可以這樣做:

using std::string; 

std::string command; 

更多的解釋:

  • <string.h>是在C.
  • C字符串
  • <cstring>是對C 〜應變gs在C++中。
  • <string>適用於C++ std::string
+1

或者在include之後放置「using std :: string」,或者使用「std :: string」而不是「string」 – Joel

+0

std :: string或者使用std :: string;應該優先於'using namespace性病;'。 – bames53

+0

@Yakk:你實際使用C++編譯器還是使用C編譯器? –

相關問題