我该怎么避免使用全局变量
dsp上的串口接收来的命令,判断命令号来执行不同的动作
switch(gSciRecBuf[2])
{
case CMD_TEST_REDAY:
Sci_TestReady(gSciRecBuf[3]);
break;
case CMD_MOVE_WITH_PRINT: //0x01
Sci_MoveWithPrint(gSciRecBuf[3]);
break;
case CMD_MOVE_WITH_NOPRINT:
Sci_MoveWithNoPrint(gSciRecBuf[3]);
break;
case CMD_STOP_PRINT: //0x10
Sci_StopPrint(gSciRecBuf[3]) ;
break;
case CMD_RETURN_CURRENT_POSITION:
break;
case CMD_RETURN_ACTION_RESULT:
break;
case CMD_MOVE_TO_ORIGIN:
Sci_MoveToOrigin(gSciRecBuf[3]);
break;
case CMD_MOVE_TEST:
Sci_MoveTest(gSciRecBuf[3]) ;
break;
case CMD_DSP_HANDSHAKE:
Sci_PC_ReturnHandShake(gSciRecBuf[3]);
break;
case CMD_BREAKLINE:
Sci_PC_ReturnBreakLine(gSciRecBuf[3]) ;
break ;
case CMD_SET_Z_SPEED:
Sci_Set_Z_Speed(gSciBufToSend[3]) ;
break ;
default:
break;
}
void Sci_PC_ReturnHandShake(Uint16 framenum)
{
gPC_ReturnHandShake = 1 ;
}
全局变量其实就是用来在两段代码之间交换数据用的,除了使用全局变量,还可以使用参数、返回值、回调函数(其实还是参数和返回值)、Windows消息、线程间用Event。
使用全局变量也有不同的用法,可以简单地定全局变量,也可以向1楼所说的把相关的变量封装为一个结构而改用全局结构变量,复杂点的作法还有使用全局队列、全局查找表等等,一切由你的需求决定。
[解决办法]