hi_girl_
hi_girl_
2016-05-12 15:05
采纳率: 50%
浏览 2.5k

程序在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上不行,求大神告知原因

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • qq423399099
    小灸舞 2016-05-13 00:44
    已采纳

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

    点赞 评论
  • caozhy

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

    点赞 评论

相关推荐