for( int i=125;i<1300;i+=25)
{
dc.MoveTo(i,-192);
dc.LineTo(i,-200);
}
for(int i=150;i<1300;i+=50)
{
dc.MoveTo(i,-184);
dc.LineTo(i,-200);
}
在VC++6.0中编译出现:error C2374: 'i' : redefinition; multiple  initialization
        : see declaration of 'i'

解决方案 »

  1.   

    编译器的问题,第二个for(i=150;i<1300;i+=50)

    {
    for(int i=150;i<1300;i+=50)
    {
    dc.MoveTo(i,-184);
    dc.LineTo(i,-200);
    }
    }
      

  2.   

    多添加一个括号。
    for( int i=125;i<1300;i+=25)
    {
    dc.MoveTo(i,-192);
    dc.LineTo(i,-200);
    }{
    for(int i=150;i<1300;i+=50)
    {
    dc.MoveTo(i,-184);
    dc.LineTo(i,-200);
    }
    }
      

  3.   

    小心使用楼上的方法
    楼上方法看起来很好却不可取,因为这样会大大增加查错难度
    建议改成
    {//这里也要加括号
        for( int i=125;i<1300;i+=25)
    {
    dc.MoveTo(i,-192);
    dc.LineTo(i,-200);
    }}
    {
            //TRACE("%d\n",i);-----当上面没加括号时将此行注识去掉你就知道会发生什么了
    for(int i=150;i<1300;i+=50)
    {
    dc.MoveTo(i,-184);
    dc.LineTo(i,-200);
    }
            //TRACE("%d\n",i);-----当上面没加括号时将此行注识去掉你就知道会发生什么了}
      

  4.   

    呵呵,VC的编译器不是标准编译器,i的定义在整个函数中都有效,呵呵,标准的C应该只在for循环中有效。VC的编译器为了支持MFC的框架去处了很多的东东。
      

  5.   

    for( int i=125;i<1300;i+=25)
    {
    dc.MoveTo(i,-192);
    dc.LineTo(i,-200);
    }
    for(i=150;i<1300;i+=50)
    {
    dc.MoveTo(i,-184);
    dc.LineTo(i,-200);
    }
    这样就可以了
    把int i=150;i<1300;i+=50该为i=150;i<1300;i+=50
      

  6.   

    同意 crystal521(水晶泪)或者把i拿到外面定义。