这是我为c ++作业编写的代码的一部分,让用户指定数组大小。出于某种原因,它在XCode中对我有用,但它对我在Visual Studio中的讲师不起作用,我失去了15分:\
int variableArraySize;
cout << "How long is your array?" << endl;
cin >> variableArraySize;
int const constArraySize = variableArraySize;
int myArray[constArraySize];
为什么会这样?你认为我应该告诉她提高我的成绩还是我的错,因为我们应该使用Visual Studio?
答案 0 :(得分:2)
您遇到的问题是,在标准C ++中,必须在编译时知道数组大小。像XCode这样的一些编译器供应商允许你做的非标准扩展和其他人不做(MSVS)。这就是它在XCode中工作但在MSVS中不工作的原因。
如果你想在运行时创建一个数组,那么我建议你使用std::vector
答案 1 :(得分:0)
C ++标准不包括对可变长度数组(VLA)的支持。有些编译器包含允许VLA的标准扩展,但Visual Studio不是其中之一。
在这种情况下,有一个简单的选择:std::vector。
这是一个完美的例子,说明为什么人们应该留意非标准语言扩展并避免使用它们。如果它不在标准中,则无法计算移植软件时存在的功能。
您如何知道某项功能是否符合标准?很多阅读,我很害怕。
C ++标准的副本是一种可能性(一旦你克服学习曲线,一些有趣的阅读),但通常更容易访问的是像cppreference这样的网站,它使用支持的标准修订来注释功能描述功能。
避免使用特定于编译器的文档。例如,从MSDN学习C ++导致Stack Overflow问题,例如,&#34;为什么不编译string^ myString;
?&#34;