visual studio 中的 C++ 错误
C++ error in visual studio
我在 CodeBlocks 中用 C++ 构建程序,运行 很好。后来我试过MS Visual Studio,它给了我一个错误信息。我不太确定这是不是我的错误,CodeBlocks 只是没有像 VS 那样识别它,还是由不同的编译器引起的假错误。
代码如下:
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main(){
string widthin;
int width, height;
cout << "Enter the size of the puzzle (WIDTH HEIGHT) : " << endl;
getline(cin, widthin);
stringstream(widthin) >> width >> height;
if (width == 0 || height == 0 || width >= 10000 || height >= 10000){
cout << "Value cannot be a zero nor can it be a letter or a number higher than 10000!" << endl;
return main();
}
cout << width << " x " << height << endl << endl;
const int plotas = width*height;
int p;
bool board[2][plotas];
错误出现在最后一行(布尔数组)。它是这样说的:
error C2057: 需要常量表达式;
错误 C2466:无法分配常量大小为 0 的数组;
VLA(可变长度数组)不是标准的 C++。
一些编译器允许将它们作为语言扩展,但它们并不受欢迎。我建议您采用惯用的方法并改用 std::vector
。
我在 CodeBlocks 中用 C++ 构建程序,运行 很好。后来我试过MS Visual Studio,它给了我一个错误信息。我不太确定这是不是我的错误,CodeBlocks 只是没有像 VS 那样识别它,还是由不同的编译器引起的假错误。
代码如下:
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
int main(){
string widthin;
int width, height;
cout << "Enter the size of the puzzle (WIDTH HEIGHT) : " << endl;
getline(cin, widthin);
stringstream(widthin) >> width >> height;
if (width == 0 || height == 0 || width >= 10000 || height >= 10000){
cout << "Value cannot be a zero nor can it be a letter or a number higher than 10000!" << endl;
return main();
}
cout << width << " x " << height << endl << endl;
const int plotas = width*height;
int p;
bool board[2][plotas];
错误出现在最后一行(布尔数组)。它是这样说的: error C2057: 需要常量表达式; 错误 C2466:无法分配常量大小为 0 的数组;
VLA(可变长度数组)不是标准的 C++。
一些编译器允许将它们作为语言扩展,但它们并不受欢迎。我建议您采用惯用的方法并改用 std::vector
。