2013-08-21 82 views
3

簡單的程序是這樣錯誤:命名空間「STD」「互斥」不姓在GCC類型4.6.2

#include <iostream>  // std::cout 
#include <thread>   // std::thread 
#include <mutex>   // std::mutex 

std::mutex mtx;   // mutex for critical section 

int main() 
{ 
    return 0; 
} 

嘗試了以下編譯

$ /usr/local/Cellar/gcc46/4.6.4/bin/g++-4.6 -std=gnu++0x -I/usr/local/Cellar/gcc46/4.6.4/gcc/include/c++ -L/usr/local/Cellar/gcc46/4.6.4/gcc/lib temp_mutex.cpp 
temp_mutex.cpp:6:1: error: 'mutex' in namespace 'std' does not name a type 

順便說我我正在Mac上編譯。

+1

檢查[this](http://stackoverflow.com/questions/14191566/c-mutex-in-namespace-std-does-not-name-a-type),也許幫助 – ningyuwhut

+0

嗯,[這個人] (http://stackoverflow.com/q/10308167/13)在Mac上的gcc 4.7上成功使用了'std :: mutex'。試試看。 :-D –

+0

我試過了,但沒有運氣。 – rkb

回答

5

它的工作對我來說:產生

$ g++-4.7 -O2 -Wall -std=c++11 -c mutextest.cc 
$ g++-4.6 -O2 -Wall -std=c++0x -c mutextest.cc 
$ g++-4.6 -O2 -Wall -std=gnu++0x -c mutextest.cc 
$ g++-4.4 -O2 -Wall -std=c++0x -c mutextest.cc 
$ g++-4.4 -O2 -Wall -std=gnu++0x -c mutextest.cc 

這些都不任何錯誤消息。

+3

你有多少個gcc版本? :) – billz

+0

@billz就是那些3.我的系統從[Squeeze](http://www.debian.org/releases/squeeze/)開始,但最近升級到[Wheezy](http://www.debian .ORG /釋放/喘鳴/)。我猜升級保留了舊版本。 –

+0

我錯過了什麼特別。因爲我嘗試了完全相同的東西,而且我仍然得到這個錯誤,這讓我覺得我錯過了某些東西來包含或鏈接相同。\ – rkb

相關問題