嘿,在过去的几天里,我问过很多次这个问题,但我就是不明白…我基本上想让Beep命令的while循环在后台执行,而用户可以与可用的case语句交互(只有一个显示…还有其他的)…我一直被阻止,每次我想让Beep发出声音我经常封锁我的程序的其余部分…我必须使用哔哔声,所以请不要建议任何其他功能。。
这是一个示例代码。。。

while( keypress != 'q' || keypress != 'Q')
{
    x = Beep(x);
    while (x == 1)
       Beep(350,300);

    alarm_t current;
    keypress = _getch();

    switch(keypress){

        case 'h':
            sprintf_s(current.message,"high alarm");
            current.timeOfEvent = time(NULL);
            recordEvent(current);
            break;

现在…我的问题是while循环和Beep命令…这里是我对Beep(x)的调用
int Beep(int y)
{
    return y;
}

所以基本上我试图在当前的cpp文件之外调用一个函数来比较x和y,并返回y作为x的等价物…我想这可能会避免阻塞,但它没有。。。

最佳答案

你的while循环哔哔声不起作用,_getch正在阻塞。所以它会一直阻塞直到出现一个角色。
根据你所处的平台,你需要类似kbhit(如果你用谷歌搜索,你会找到其他平台的替代品)。ie它不是标准的C功能和特定平台。
kbhit将返回true或false,具体取决于是否有字符。
所以你可以:

while(!key_is_quit(ch))
{
  Beep();
  if(kbhit())
  {
    ch = getch();
  // switch....
  }
}

关于c - 我如何停止封锁?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15670616/

10-10 07:22