让用户指定数组大小在XCode中工作,但在Visual Studio中不工作

时间:2015-12-01 20:34:32

标签: c++ arrays xcode visual-studio const

这是我为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?

2 个答案:

答案 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;