循环跳出的问题。。。头痛啊。

来源:百度知道 编辑:UC知道 时间:2024/05/29 10:58:48
//========================================================================
// 语法格式: int main(void)
// 实现功能: 主程序
// 参数: 无
// 返回值: int 无意义
//========================================================================
void F_Key_Scan_Initial(void);
void F_Key_Scan_ServiceLoop(void);
unsigned int SP_GetCh(void);

void Speech_Resource(unsigned int iSpeechIndex);
void Speech_Result(unsigned int uiResult);
int main(void)
{
unsigned int uiKey;
unsigned int Back_data;

F_Key_Scan_Initial();
Initial_ult();
while(1)
{
uiKey = SP_GetCh();
switch(uiKey)
{
case 0: break;
case 1:
Speech_Resource(12); //倒车请注意

while(1)
{
Back_data = measure_Times(0);

不太明白,while(true)里还要套一个while(true).
虽然还是不太明白,根据你的意思,这里要用到的是多线程的思路。用GOTO可能还是实现不了的。VC代码如下:

#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#include <conio.h>
DWORD WINAPI case1proc(
LPVOID lpParameter // thread data新线程的入口函数
);
int main(int argc, char* argv[])
{
int a;
BOOL case1run=0; //这里指case1是否为真,初始为否
while(1){
a=getch();

HANDLE h1; //句柄,将来要用来存放线程的地址。
switch(a)
{
case 49: //实在不好意思,对你的函数原型不太了解,这里用自己的参数做的。a=49:意思是键盘下按下了1键。
if(case1run==0) { //如果条件1没有运行。
case1run=TRUE; //条件1为真。
h1=CreateThread(NULL,0,case1proc,NULL,0,NULL); //创建一个多线程,句柄h1,入口函数为case1proc

printf("Main thread\n");//这里你自己修改
}

break;
case 50: //如果按下键盘2键
if(case1run==1)
{
TerminateThread(h1,0);//关掉线程h1
case1run=0; //条件1为假
printf("\ncase1 thread is stopped.\n&