2014-01-16 58 views
0

請幫我解決這個錯誤。C++ constexpr錯誤語句顯示錯誤

我想做一個樣本,解釋C++中的constexpr關鍵字。我正在使用Visual Studio 2013. 以下是我的cpp文件的代碼。

#include <iostream> 
#include <stdexcept> 

const int sampleconstant = 5; 


constexpr int constTest(void) 
{ 
    return sampleconstant; 
} 
int main() 
{ 

    std::cout << constTest(); 
    getchar(); 
    return 0; 
} 

這表明編譯時間錯誤如下:

錯誤1個錯誤C2144:語法錯誤: 'INT' 前應先 ';'

錯誤2錯誤C4430:缺少類型說明符 - 假定爲int。注意:C++不支持default-int

我可能在這裏做些傻事。但真的無法弄清楚這個錯誤。代碼看起來對我好。如果任何人可以幫助我的錯誤,請幫助。

+0

我想也許你誤解的意思'constexpr' ......這意味着該函數的值可以在編譯計算時間。這顯然不是'factorial'的情況,因爲'n'的值在編譯時並不固定。見http://en.wikipedia.org/wiki/C%2B%2B11#constexpr_.E2.80.93_Generalized_constant_expressions –

+0

您好Markku K.感謝您的觀點。但我簡化了上面的代碼。上述修改的代碼顯示相同的錯誤。我認爲我的理解對constexpr是可以的。但上面修改的代碼顯示的是相同的錯誤。讓我知道你是否仍然在代碼 – techfun

+0

中發現一些問題**這個版本的編譯器不支持該功能**(並在Google上進行快速搜索,甚至是SO會告訴你!)。 –

回答

-3

正如已經告訴你的,它不支持VS.

您可以在此鏈接查看由編譯器支持有特色的列表:http://wiki.apache.org/stdcxx/C++0xCompilerSupport

+5

-1:該表格可怕地過時了。首先,它在三年__中沒有「C++ 0x」。另一方面,自去年5月以來該數據並未更新。最後,Visual Studio支持的功能不僅僅是OP所使用的版本。 –

+1

爲什麼upvote(s)? – Shoe

+0

對於這個錯誤,我很抱歉,我用Google搜索了一下這張表,但我並沒有意識到這是過時的。 – SomaOS