error C2051: case expression not constant ?

来源:互联网 发布:php 代码加密 编辑:程序博客网 时间:2024/05/17 00:58

      今天编程。在键盘响应函数里需要用到下面的函数,

      void keyboard(unsigned char key, int x, int y) 
   { 
          switch (key) 
           { 
            case "s":
            case "S":
           angleX +=15.0;
           glutPostRedisplay();
           break;
            case "d":
            case "D":
            angleY += 15.0;
            glutPostRedisplay();
           break;

         case 27: //即键盘左上角的esc
           exit(0); 
          break; 
       }

}

   在VC里编译时,出现 error C2051: case expression not constant。


    我想不至于呀,  case "s":
                               case "S":  明明就是常量嘛,字符嘛。

    在网上搜了半天,发现了case表达式还真有问题 ,

     比如 's'才是常量(单引号) ,"s" 这样就是字符串了(双引号)。

     所以解决方法是把所有的case 表达式里面的双引号换成单引号如下:

     void keyboard(unsigned char key, int x, int y) 
  {    switch (key) 
       { case 's':
         case 'S':
        angleX +=15.0;
        glutPostRedisplay(); 
         break;
         case 'd':
         case 'D': 
         angleY += 15.0;glutPostRedisplay();
         break;
        case 27: //即键盘左上角的esc
           exit(0); 
          break;    

      }

  }


编译成功!

本来以前解决过这个问题,用时又想不起来了,今天又遇到,所以专门记下来,以备后用!