我的印象是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?
我的印象是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?
原因是Visual Studio設置爲使用Visual C++ 9編譯器(Visual Studio 2008附帶的編譯器)。我不知道它是如何發生的,也許是嚮導配置Visual Studio導入到以前版本的路徑。
設置在項目屬性中更改 - 在「VC++目錄」窗格中。檢查編譯器被調用的簡單方法是將-Bv
選項添加到編譯器命令行,這將使編譯器報告其版本。
我在印象之下Visual C++ 10內置了static_assert。
它確實做這編譯完美的罰款對我來說:
int main(){
static_assert(sizeof(char) == 1, "");
}
你有沒有在你的代碼中的任何其他錯誤?也許這個錯誤是其他erros鏈的結果。
它可能與編譯標誌有關......'static_assert'是一個C++ 0x功能,可能通過選項禁用? –
@David:Afaik沒有選項來禁用VC10中的C++ 0x支持,甚至禁用語言擴展('/ Za')不會產生錯誤。 – Xeo
也許不正確的VS10包? –
按照預期在VS2010,SP1中進行編譯。 –
也許你在普通首選項中的工具集是錯誤的,並指向一個較舊的編譯器,因爲我不知道編譯器開關禁用C++ 0x。 – mkaes