当前位置: 代码迷 >> C语言 >> MSVC6.0 语法限制过严
  详细解决方案

MSVC6.0 语法限制过严

热度:145   发布时间:2007-11-17 09:45:19.0
MSVC6.0 语法限制过严
void inverse(int n,const short stage,short r)
{
char temp[stage];
int i=0;
do {
temp[i] = n%r; // 取 r 进制数个数位上的值
i++; n /= r;
}while(i<stage);//while(n>0);

return 0;
}
MSVC6.0 编译上面的代码出现错误
error C2057: expected constant expression
:twin.cpp(37) : error C2466: cannot allocate an array of constant size 0
error C2133: 'temp' : unknown size
但是在编译器 cfree3.5 ,watcom,和dev-c++ 下编译则没有问题,是不是MSVC6.0 编译器的语法限制过严?
搜索更多相关的解决方案: 语法  

----------------解决方案--------------------------------------------------------
dev-C++ 能过吗?
----------------解决方案--------------------------------------------------------
是的 ,能通过

----------------解决方案--------------------------------------------------------
1。源程序后缀名 .c 而不是 .cpp C++标准不支持变长数组
2。确认你的编译器的选项是 C99
----------------解决方案--------------------------------------------------------
以下是引用vfdff在2007-11-17 9:45:19的发言:
void inverse(int n,const short stage,short r)
{
char temp[stage];
int i=0;
do {
temp[i] = n%r; // 取 r 进制数个数位上的值
i++; n /= r;
}while(i<stage);//while(n>0);

return 0;
}
MSVC6.0 编译上面的代码出现错误
error C2057: expected constant expression
:twin.cpp(37) : error C2466: cannot allocate an array of constant size 0

error C2133: 'temp' : unknown size
但是在编译器 cfree3.5 ,watcom,和dev-c++ 下编译则没有问题,是不是MSVC6.0 编译器的语法限制过严?

已经是无返回值声明的函数,怎么还要return 0


----------------解决方案--------------------------------------------------------
而且程序在 dev-C++下编译错误0,警告0,在MSVC6.0中 编译多了很多的警告
----------------解决方案--------------------------------------------------------
回复:(Knocker)1。源程序后缀名 .c 而不是 .cpp ...
在哪里设置 ??

----------------解决方案--------------------------------------------------------
if(count>=START & count<END)
这个语句在 MSVC6.0中 竟然警告要求使用 括号来明确优先级(use parentheses to clarify precedence)

----------------解决方案--------------------------------------------------------

严格不是很好吗……还有,&和>=哪个的优先级高啊?


----------------解决方案--------------------------------------------------------
查了一下书,&amp;是个位操作符,一般是用在处理bit上面的。如果你要用逻辑与(看你的意思好像是这样),应该用&amp;&amp;。编译器提醒你是不是用错了。我觉得这个编译器挺好的~~不过如果你坚持要用&amp;,这个表达式的优先级也是对的…………
----------------解决方案--------------------------------------------------------