首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可供选择;STDBOOL未找到

可供选择;STDBOOL未找到
EN

Stack Overflow用户
提问于 2013-06-22 09:53:03
回答 2查看 4.7K关注 0票数 2

我正试着读一个键击,然后停止一个密码。在C.

代码语言:javascript
复制
#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,它会显示错误,比如

代码语言:javascript
复制
syntax error: identifier 'starting', 
syntax error: ";"
syntax error: ")"
'starting': undeclared identifier

对于stdbool.h,它表示文件未找到。我的编译器是Visual 2010附带的编译器。

有什么建议怎么去掉这个吗?如何仍然使用返回布尔值的函数?

添加了对不起!简短的评论补充道。基本上解决了。谢谢大家

添加了更多的错误:编译后:它读取:

代码语言:javascript
复制
filename.obj unresolved external symbol _delay referenced in function _main.

我该怎么办?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-22 10:02:18

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

代码语言:javascript
复制
typedef int bool;
#define true 1
#define false 0
票数 6
EN

Stack Overflow用户

发布于 2013-06-22 09:57:40

同时存在三个问题:

  • C不知道bool是它自己的一种类型,但是您可以定义它(例如,通过stdbool.h或者仅仅通过对任何其他整体类型使用typedef (通常是unsigned charint;这可能是内存使用还是基于性能的问题)。
  • MSVC因没有所有的std**.h头,特别是旧版本而闻名。所以您很可能在VS 2010中没有stdbool.h (文件没有找到错误的原因)。
  • 在表达式:while(!starting)中缺少括号。
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17249388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档