程序在dev上编译没有问题,在vs上不行,求大神告知原因

void MyStr:: Set(int _len){
char ch[_len];
cin>>ch;
error C2057: 应输入常量表达式
1>d:\c++编程\vs2008\projects\实验九\实验九\mystr.cpp(43) : error C2466: 不能分配常量大小为 0 的数组
1>d:\c++编程\vs2008\projects\实验九\实验九\mystr.cpp(43) : error C2133: “ch”: 未知的大小
在dev上编译没有问题,在vs上不行,求大神告知原因

因为dev使用的是GCC编译器,该编译器是允许使用变长数组的
而VS里的编译器是不允许变长数组的,数组的长度必须是个常量,可以使用new或者malloc来替代
PS:使用变长数组也要小心,有不少坑

VC++ 2008不支持变量作为数组大小,你需要用new代替
char * ch = new char[_len];