首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试在VS 2010中使用'#include <stdbool.h>‘

尝试在VS 2010中使用'#include <stdbool.h>‘
EN

Stack Overflow用户
提问于 2011-12-18 06:52:02
回答 3查看 48.2K关注 0票数 24

我正在尝试在C程序中使用stdbool.h库文件。然而,当我尝试编译时,出现一条错误消息,指出intellisense无法打开源文件stdbool.h。

有没有人能告诉我怎样才能让visual studio识别这一点?这个头文件是否有效?我正在读一本关于学习C编程的书。

EN

回答 3

Stack Overflow用户

发布于 2011-12-18 09:24:16

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

工作得很好。Windows头文件也做同样的事情。完全没有理由担心在int中存储两位值所消耗的“浪费”内存。

正如Alexandre在评论中提到的,微软的C编译器(与Visual Studio捆绑在一起) doesn't support C99,很可能不会。这很不幸,因为C99中支持stdbool.h和许多其他更有用的特性,但Visual Studio中不支持。它停留在过去,只支持较旧的标准,称为C89。令我惊讶的是,您在尝试定义代码块开头以外的其他地方时没有遇到问题。每当我在VS中编写C代码时,它就会让我头疼。

一种可能的解决方法是将Visual Studio配置为将代码编译为C++。然后,你在C99书中读到的几乎所有东西都可以正常工作,而不会出现编译器阻塞的情况。在C++中,内置了bool类型(尽管它在C++模式中是1字节类型,而不是像C模式中那样是4字节类型)。要进行此更改,可以在集成开发环境中编辑项目的编译设置,也可以简单地将文件重命名为具有cpp扩展名(而不是c)。VS将相应地自动设置编译模式。

Visual Studio的现代版本(2013及更高版本)提供了对C99的改进支持,但它仍然不完整。老实说,如果您正在尝试学习C语言(因此现在的C99也是如此),更好的解决方案是选择一个不同的编译器。如果你在Windows上运行,MinGW是一个很好的选择。很多人喜欢Code::Blocks集成开发环境

票数 28
EN

Stack Overflow用户

发布于 2013-01-19 03:00:25

创建您自己的文件来替换stdbool.h,如下所示:

代码语言:javascript
复制
#pragma once

#define false   0
#define true    1

#define bool int

在Visual Studio2010中,我在使用其他地方建议的typedef int bool;时遇到了问题。IntelliSense抱怨说“类型说明符的组合无效”。似乎"bool“这个名字仍然很特别,尽管它没有被定义。

票数 13
EN

Stack Overflow用户

发布于 2017-09-27 19:28:32

作为警告,在x64平台上,VS2017 (我对以前的版本不太确定)在C++上将bool定义为一个1字节的值(例如char)。所以这就是

代码语言:javascript
复制
typedef int bool;

如果你把它作为C文件中的int (4字节)和C++ (1字节)中的原生bool使用(例如,.h中的struct可能有不同的大小,这取决于你是用C还是用C++编译它),这可能是非常危险的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8548521

复制
相关文章

相似问题

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