1

我的印象是Visual C++ 10 had built-in static_assert。然而,當我編譯下面static_assert在Visual C++中不起作用10

void test() 
{ 
    static_assert(sizeof(char) == 1, ""); 
} 

我得到

錯誤C3861: 'static_assert':標識符找不到

什麼我做錯了,我如何在Visual使用static_assert C++ 10?

+0

也許不正確的VS10包? –

+2

按照預期在VS2010,SP1中進行編譯。 –

+0

也許你在普通首選項中的工具集是錯誤的,並指向一個較舊的編譯器,因爲我不知道編譯器開關禁用C++ 0x。 – mkaes

回答

2

原因是Visual Studio設置爲使用Visual C++ 9編譯器(Visual Studio 2008附帶的編譯器)。我不知道它是如何發生的,也許是嚮導配置Visual Studio導入到以前版本的路徑。

設置在項目屬性中更改 - 在「VC++目錄」窗格中。檢查編譯器被調用的簡單方法是將-Bv選項添加到編譯器命令行,這將使編譯器報告其版本。

2

我在印象之下Visual C++ 10內置了static_assert。

它確實做這編譯完美的罰款對我來說:

int main(){ 
    static_assert(sizeof(char) == 1, ""); 
} 

你有沒有在你的代碼中的任何其他錯誤?也許這個錯誤是其他erros鏈的結果。

+1

它可能與編譯標誌有關......'static_assert'是一個C++ 0x功能,可能通過選項禁用? –

+2

@David:Afaik沒有選項來禁用VC10中的C++ 0x支持,甚至禁用語言擴展('/ Za')不會產生錯誤。 – Xeo

相關問題