Здесь важны три вещи (компилятор, IDE и ОС).
1) Компилятор: GCC 4.6 уже имеет хорошую поддержку C++ 11 и имеет заголовки <thread>
и <chrono>
. Но вы должны скомпилировать с -std=c++0x
. Если вы используете IDE, он должен быть сконфигурирован так, чтобы генерировать make как таковой (так что проверьте опцию компилятора)
2) ОС также важна: заголовок <thread>
представляет собой набор оберток вокруг концепции POSIX ptherad, мьютекса и condition_variable. В Windows условия condition_variable изначально присутствуют только с 0x600 (Vista), до 0x505 (XP), вам приходится иметь дело с собственными «объектами синхронизации EVENT», которые могут быть эквивалентными, bu имеют разную семантику (boost::thread
реализует адаптеры, но GCC просто пропускает всю реализацию потока: отсюда ... если вы пишете больше ОС, проверьте, существует ли на их основе реализация библиотеки!)
3) IDE также имеет важное значение: так как редакторы анализируют текст и отображают информацию о завершении, а также «синтаксическую ошибку при наборе текста» и т. д. doen НЕ зависят от компилятора, но от используемого ими анализатора. В частности, GCC при настройке с -std = C++ 0X предполагает неявное определение символа __GXX_EXPERIMENTAL_CXX0X__
, которое не допускается автоматически IDE (которое неправильно анализирует заголовки) Вы также должны настроить IDE рассмотреть символ __GXX_EXPERIMENTAL_CXX0X__
как «определенный» при разборе.
Ваша проблема, скорее всего, связана с пунктом 3
Какой компилятор вы используете? если g ++, он поддерживает большинство функций C++ 11 в версии 4.7. –
netbeans является ** ide ** не компилятором. –
@ компилятор g ++ и ide is 7.1.1 – gandhigcpp