4回答

0收藏

error: #28: expression must have a constant value

STMCU STMCU 8991 人阅读 | 4 人回复 | 2014-02-10

  1. typedef enum colors
  2. {blue=1,red,yellow,green,white,orange}Colors;

  3. typedef struct surface
  4. {
  5.         Colors s[4][4];
  6. }Surface;
复制代码
前面定义是这样
  1. void DownCross(Cube *magiccube)//?????????
  2. {
  3.                 char *s[4]={"f","l","b","r"};
  4.                 int subscript_of_down[4][2]={{1,2},{2,1},{3,2},{2,3}};
  5.                 int subscript_of_up[4][2]={{3,2},{2,1},{1,2},{2,3}};
  6.                 char ch[3];
  7.                 int n,i;
  8.         while(!((magiccube->down.s[1][2]==magiccube->down.s[2][2]&&magiccube->front.s[3][2]==magiccube->front.s[2][2])
  9.                 &&(magiccube->down.s[2][1]==magiccube->down.s[2][2]&&magiccube->left.s[3][2]==magiccube->left.s[2][2])
  10.                 &&(magiccube->down.s[2][3]==magiccube->down.s[2][2]&&magiccube->right.s[3][2]==magiccube->right.s[2][2])
  11.                 &&(magiccube->down.s[3][2]==magiccube->down.s[2][2]&&magiccube->back.s[3][2]==magiccube->back.s[2][2])))
  12.         {
  13. <font color="#ff0000">                Surface *sur[4]={&magiccube->front,&magiccube->left,&magiccube->back,&magiccube->right};</font>

  14.                 for(i=0;i<4;i++)
  15.                 {
  16.                         if(magiccube->down.s[subscript_of_down[i][0]][subscript_of_down[i][1]]==magiccube->down.s[2][2]
  17.                                 &&sur[i]->s[3][2]!=sur[i]->s[2][2])
  18.                         {
  19.                                 strcpy(ch,s[i]);
  20.                                 MoveCube(magiccube,ch,2);
  21.                         }
复制代码
出错在红色那块  用的MDK编译的

用Visual C++编译没问题  求解
分享到:
回复

使用道具 举报

回答|共 4 个

倒序浏览

沙发

anti-t

发表于 2014-2-10 22:17:07 | 只看该作者

  1. void DownCross(Cube *magiccube)//?????????
  2. {
  3.                 char *s[4]={"f","l","b","r"};
  4.                 int subscript_of_down[4][2]={{1,2},{2,1},{3,2},{2,3}};
  5.                 int subscript_of_up[4][2]={{3,2},{2,1},{1,2},{2,3}};
  6.                 char ch[3];
  7.                 int n,i;
  8.         while(!((magiccube->down.s[1][2]==magiccube->down.s[2][2]&&magiccube->front.s[3][2]==magiccube->front.s[2][2])
  9.                 &&(magiccube->down.s[2][1]==magiccube->down.s[2][2]&&magiccube->left.s[3][2]==magiccube->left.s[2][2])
  10.                 &&(magiccube->down.s[2][3]==magiccube->down.s[2][2]&&magiccube->right.s[3][2]==magiccube->right.s[2][2])
  11.                 &&(magiccube->down.s[3][2]==magiccube->down.s[2][2]&&magiccube->back.s[3][2]==magiccube->back.s[2][2])))
  12.         {
  13.                 [color=Red]Surface *sur[4]={&magiccube->front,&magiccube->left,&magiccube->back,&magiccube->right};[/color]

  14.                 for(i=0;i<4;i++)
  15.                 {
  16.                         if(magiccube->down.s[subscript_of_down[i][0]][subscript_of_down[i][1]]==magiccube->down.s[2][2]
  17.                                 &&sur[i]->s[3][2]!=sur[i]->s[2][2])
  18.                         {
  19.                                 strcpy(ch,s[i]);
  20.                                 MoveCube(magiccube,ch,2);
  21.                         }
复制代码
板凳

anti-t

发表于 2014-2-10 22:18:07 | 只看该作者

出错在这一句

Surface *sur[4]={&magiccube->front,&magiccube->left,&magiccube->back,&magiccube->right};
地板

陈克雄

发表于 2014-2-13 21:37:14 | 只看该作者

吖坨 发表于 2014-2-10 22:18
出错在这一句

Surface *sur[4]={&magiccube->front,&magiccube->left,&magiccube->back,&magiccube->right ...

C++有些规范和标准C是不同的,所以VC++能运行的程序在MDK里面不一定能运行(如果是C语言工程)
5#

陈克雄

发表于 2014-2-13 21:43:09 | 只看该作者

吖坨 发表于 2014-2-10 22:18
出错在这一句

Surface *sur[4]={&magiccube->front,&magiccube->left,&magiccube->back,&magiccube->right ...

按照C规范的话,sur这个指针数组声明好像应该要放在函数前几行而不应该放在功能语句之后,可以试试先声明然后再赋值~~
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条