1

我正在尝试读取按键然后停止代码。在 C.

#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

bool starting()
{
  char c;
    if (kbhit())
    {
        c=getch();
        if (c=="S"||c=="s")
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    else
    {
      return false;
    }
}

int main()
{
  while(!starting)
  {
    printf("line 1");
    delay(100);
  }
  return 0;
}

没有stdbool.h,它会说像这样的错误

syntax error: identifier 'starting', 
syntax error: ";"
syntax error: ")"
'starting': undeclared identifier

使用 stdbool.h,它说找不到文件。我的编译器是 Visual Studio 2010 附带的。

任何建议如何删除它?我怎样才能仍然使用返回布尔值的函数?

添加 对不起!添加的简短评论。大部分解决。谢谢大家

添加 了更多错误:编译后:它显示:

filename.obj unresolved external symbol _delay referenced in function _main.

我该怎么办?

4

2 回答 2

6

stdbool.h中引入C99,Visual Studio 不支持C99. 您可以自己定义类型。一种可能的方法是:

typedef int bool;
#define true 1
#define false 0
于 2013-06-22T10:02:18.747 回答
-1

一下子解决三个问题:

  • C 不知道bool它自己的类型,但您可以定义它(例如,通过stdbool.h或仅使用 atypedef到任何其他整数类型(通常是unsigned charor int;这可能是内存使用与基于性能的问题)。
  • MSVC 以没有所有std**.h标头而闻名,尤其是旧版本。所以你很可能只是stdbool.h在 VS 2010 中没有(找不到文件错误的原因)。
  • 您在此表达式中缺少括号:while(!starting).
于 2013-06-22T09:57:40.857 回答