Joh*_*ohn 23 c visual-studio-2010 visual-studio
我正在尝试在C程序中使用stdbool.h库文件.但是,当我尝试编译时,会出现一条错误消息,指出intellisense无法打开源文件stdbool.h.
任何人都可以建议我如何让视觉工作室认识到这一点?这个头文件是否有效?我正在读一本关于学习C编程的书.
Cod*_*ray 26
typedef int bool;
#define false 0
#define true 1
Run Code Online (Sandbox Code Playgroud)
工作得很好.Windows标题执行相同的操作.绝对没有理由担心通过在一个中存储一个两位值而消耗的"浪费"内存int.
正如Alexandre在评论中提到的,微软的C编译器(与Visual Studio捆绑在一起)不支持C99,可能不会.这很不幸,因为stdbool.hC99支持许多其他更有用的功能,但在Visual Studio中则不支持.它一直停留在过去,仅支持称为C89的旧标准.我很惊讶你没有遇到一个问题,试图在块的开头以外的地方定义变量.每次我在VS中编写C代码时都会咬我.
一种可能的解决方法是将Visual Studio配置为将代码编译为C++.那么你在C99书中读到的几乎所有东西都可以在没有编译器窒息的情况下工作.在C++中,类型bool是内置的(尽管它在C++模式下是1字节类型,而不是像C模式中的4字节类型).要进行此更改,您可以在IDE中编辑项目的编译设置,或者只需将文件重命名为具有cpp扩展名(而不是c).VS将自动相应地设置编译模式.
现代版本的Visual Studio(2013及更高版本)提供了对C99的改进支持,但仍然不完整.老实说,如果您正在尝试学习C(现在是C99),那么更好的解决方案就是选择不同的编译器.如果您在Windows上运行,MinGW是一个不错的选择.很多人喜欢Code :: Blocks IDE
che*_*rno 13
创建自己的文件来替换如下所示的stdbool.h:
#pragma once
#define false 0
#define true 1
#define bool int
Run Code Online (Sandbox Code Playgroud)
在Visual Studio 2010中,我使用typedef int bool;其他地方建议的问题.IntelliSense抱怨"类型说明符无效组合".似乎"bool"这个名字仍然很特别,即使它没有定义.