3
我想使用Visual Studio 2012 Professional編譯以下源代碼,並且出現編譯錯誤。但是相同的代碼在Visual Studio 2013中工作。當我檢查Vs 2012時,它支持大多數C++ 11功能。該程序使用C++ 11兼容編譯器構建。 我找到這個程序http://lucid-motif.blogspot.com/2013/11/coding-puzzle-knight-sequences.html?Visual Studio C++ 11g編譯錯誤 - 太多初始化程序
typedef enum { _A,_B,_C,_D,_E,_F,_G,_H,_I,_J,_K,_L,_M,_N,_O,_1,_2,_3 } TKeyIdentity;
typedef std::vector<TKeyIdentity const> TKeyPath
typedef std::vector<TKeyPath const> TKeyMap;
const TKeyMap keyPad =
{
{ _H, _L }, // A
{ _I, _K, _M }, // B
{ _F, _J, _L, _N }, // C
{ _G, _M, _O }, // D
{ _H, _N }, // E
{ _C, _M, _1 }, // F (_1) not valid for 2 moves followed by 1 move rule
{ _D, _N, _2 }, // G
{ _A, _E, _K, _O, _1, _3 }, // H
{ _B, _L, _2 }, // I
{ _C, _M, _3 }, // J (_3) not valid for 2 moves followed by 1 move rule
{ _B, _H, _2 }, // K
{ _A, _C, _I, _3 }, // L
{ _B, _D, _F, _J }, // M
{ _C, _E, _G, _1 }, // N
{ _D, _H, _2 }, // O (oh)
{ _F, _H, _N }, // 1
{ _G, _I, _K, _O }, // 2 (_K) & (_O) not valid for 2 moves followed be 1 move rule
{ _H, _J, _L } // 3
};
const TKeyPath keyPadRoot =
{
_A, _B, _C, _D, _E, _F, _G, _H, _I, _J, _K, _L, _M, _N, _O, _1, _2, _3
}
鍵盤和keyPadRoot初始化器給下面的錯誤
錯誤3錯誤C1903:無法從先前的錯誤(多個)恢復;正在停止編譯 錯誤2錯誤C2078:太多的初始值設定
錯誤1錯誤C2552:「鍵」:非聚集不能初始化列表初始化
感謝您的幫助。
如果您想要MSVS的標準合規性,那麼2015更新3是您現在可以獲得的最佳選擇。 – NathanOliver
您似乎很確定地證明VS 2012不支持您嘗試使用的C++ 11功能。 –
[此處的功能支持矩陣](https://msdn.microsoft.com/en-us/library/hh567368.aspx)。初始化列表支持從VS2013開始支持。 –