2011-10-05 15 views
5

Aşağıdaki kodu derlerken:Hata MacOSX Lion gcc 4.6.1 C++ 0x diş kodu derlerken

#include <iostream> 
#include <thread> 

using namespace std; 

void hello() 
{ 
     cout << "Hello World!" << endl; 
} 

int main() 
{ 
     cout << "starting" << endl; 
     thread t(hello); 
     t.join(); 
     cout << "ending" << endl; 
     return 0; 
} 

kullanarak:

: aşağıdaki hatayı alıyorum

$ g++-4.6.1 -std=c++0x -pthread threading.cpp 

threading.cc: In function ‘int main()’: 
threading.cc:13:2: error: ‘thread’ was not declared in this scope 
threading.cc:13:9: error: expected ‘;’ before ‘t’ 
threading.cc:14:2: error: ‘t’ was not declared in this scope 

Bu, MacOSX Lion üzerinde özel olarak oluşturulmuş gcc 4.6.1 üzerindedir. Gcc 4.6 için geçerli olan tüm diğer C++ 0x özellikleri, bir çekicilik gibi çalışır. Bu MacOSX'e özgü bir hata mı?

+0

için neler olabileceğini bilmiyorum, ama asla kullanmamayı biliyorum; Bunun yerine ben derleyici seçenekleri – sehe

+1

sonunda (!) '-lpthread' kullanmak Ben hala std :: tr1 'olabilir. 4.6 yayınlandığında C++ 11 resmi değildi. –

+0

Burada yanılmış olabilirim, ancak posix iş parçacığı içinde değil mi? Bu projeniz tarafından gerekli değildir. – Alan

cevap

3

Bkz. http://gcc.gnu.org/PR50196 - Mac OS X, güvendiğimiz bazı pthreads parçalarını desteklemez. En son sürümü oluşturma yardımcı olmayacaktır, ancak GCC 4.7

+0

Teşekkürler. Şimdi izlemek için bir hatam var. –

+0

Btw .. GCC –

+1

ile harika bir iş çıkardığın için teşekkürler. Bu hatayı sabit olarak kapattım - örnek kodunuz GCC 4.7 –

4

std::thread (ve C++ 11 iş parçacığının geri kalanı) yalnızca gcc 4.6.1 tarafından desteklenen bazı platformlar için kullanılabilir. Maalesef senin için MacOSX bu platformlardan biri değil.

Ticari Just::Thread kitaplığım, gcc 4.5 ile 32 bit MacOSX için C++ 11 iş parçacığı sağlar, ancak gcc 4.6 henüz desteklenmemektedir.

+0

Teşekkür ederim. Hangi şeylerin desteklendiği ve hangi platformlarda hangi tür konularda bilgi edinebilirim? Kaynak depodan en yeni süreyi oluşturduğumda std :: thread'in kullanılabilir olduğunu mu düşünüyorsunuz? –