2013-04-07 320 views
6

我正在使用tbb :: parallel_for函數使用lambdas。我收到的語法錯誤與下面的代碼:如何在visual studio 2010 express版上啓用C++ 11編譯器?

void parallel_relax(Class object, std::vector<Vertex *> verList) { 
    tbb::parallel_for (blocked_range<int>(0, verList.size()), [=](const blocked_range<Vertex *>& r) { 
     for(Vertex *vit = r.begin(); vit != r.end(); ++vit) { 
      Vertex *v = vit; 
      object.function(v); 
     } 
    }); 
} 

語法錯誤:

syntax error : '[' 
1>main.cpp(16): error C2143: syntax error : missing ')' before '{' 
1>main.cpp(16): error C2143: syntax error : missing ';' before '{' 
1>main.cpp(17): error C2065: 'r' : undeclared identifier 
1>main.cpp(17): error C2228: left of '.begin' must have class/struct/union 
1>   type is ''unknown-type'' 
1>main.cpp(17): error C2065: 'r' : undeclared identifier 
1>main.cpp(17): error C2228: left of '.end' must have class/struct/union 
1>   type is ''unknown-type'' 
1>main.cpp(20): error C2059: syntax error : ')' 
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 

我認爲這是與編譯器的問題。我如何獲得visual studio 2010快速版的C++ 11編譯器。請建議。

+0

什麼是第16行和第17行? – 2013-04-07 18:11:21

+0

「tbb :: parallel_for」是第16行,「for(Vertex * vit = r.begin(); vit!= r.end(); ++ vit)」是第17行 – Hello 2013-04-07 18:30:25

+0

,所以我將無法因爲我在Windows 7上使用C++ 11,並且只能使用Visual Studio 2010?順便說一句...我不想用MinGW G ++的Eclipse,因爲我覺得它很難看...... :( – ha9u63ar 2014-11-01 15:44:55

回答

3

要獲得C++ 11功能,您應該使用最新版本Visual Studio 2012

C++11 Features (Modern C++)

的Visual C++ 2010中實現在C++ 0x中的核心語言規範,這是前體對C++ 11的許多功能,並在Visual Studio中的Visual C++ 2012上擴展到包括許多C++ 11功能。

4

Visual C++ 2010 Express確實包含C++ 11功能,但不是全部。以下列出了它支持的功能(以及VC++ 2012): http://msdn.microsoft.com/en-ca/library/vstudio/hh567368.aspx

+0

如何啓用C++ 11功能?如果默認情況下啓用,那麼爲什麼它會給出語法錯誤? – Hello 2013-04-07 20:14:02

+2

正如我上面所說的,並不是所有的這些列表都是第一眼看起來有點欺騙,但是更深層次上你可以看到,在VC10中對lambda表達式的支持僅僅是部分的,這就是爲什麼你會得到語法錯誤。 – Chris 2013-04-08 01:55:26

+0

This鏈接似乎只列出VS2012,13,15 – slyy2048 2016-08-23 00:48:22

相關問題