Ошибка при компиляции gcc 4.6.1 C ++ 0x многопоточного кода на MacOSX Lion - PullRequest
5 голосов
/ 05 октября 2011

При компиляции следующего кода:

#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;
}

с использованием:

$ 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

Это на MacOSX Lion спользовательский gcc 4.6.1.Все остальные функции c ++ 0x, действительные для gcc 4.6, работают как шарм.Это специфичная для MacOSX ошибка?

Ответы [ 2 ]

5 голосов
/ 06 октября 2011

std::thread (и остальная часть библиотеки потоков C ++ 11) доступна только для некоторых платформ, поддерживаемых gcc 4.6.1.К сожалению для вас, MacOSX не является одной из этих платформ.

Моя коммерческая библиотека Just :: Thread предоставляет возможности потока C ++ 11 для 32-битного MacOSX с gcc 4.5, но gcc4.6 пока не поддерживается.

3 голосов
/ 06 октября 2011

См. http://gcc.gnu.org/PR50196 - Mac OS X не поддерживает некоторые части pthreads, на которые мы опираемся.Сборка последней версии не поможет, но она может быть исправлена ​​в GCC 4.7

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...