C编译时`true'+undeclared+(first+use+in+this+function)

原文:http://liuzhigong.blog.163.com/blog/static/178272375201121664244437/

在编译C语言时有时会遇到这样的错误提示:
`true' undeclared (first use in this function) or `false' undeclared (first use in this function)
就是说 bool, true, false 都是undeclared,原因很简单,因为真正的C中没有这些关键字,c和早期的c++里没有关键字bool,使用BOOL可以,但BOOL不是内置类型了,都是通过typedef或者宏来定义的,通常都会被定义成int类型。后来的c++出现了内置类型bool,值只能为true(1)和false(0)。
解决方法:
1、将文件名.c改为文件名.cpp,用C++方式编译则没问题
2、自己进行一个宏定义:
 typedef enum __bool { false = 0, true = 1, } bool;
c90是没有bool的,因此支持c90的dev-c++当然也没有。想在c90里用bool,可以自行用宏进行定义。 
c99支持bool,用支持c99的编译器例如gcc就可以的。

时间: 2024-10-30 16:06:06

C编译时`true'+undeclared+(first+use+in+this+function)的相关文章

error: 'FALSE' undeclared (first use in this function)

在gcc中编译出现错误提示:error: 'FALSE' undeclared (first use in this function) 解决方法: #ifndef FALSE #define FALSE (0) #endif #ifndef TRUE #define TRUE (!FALSE) #endif

error: 'ENOSYS' undeclared (first use in this function)

/************************************************************************ * error: 'ENOSYS' undeclared (first use in this function) * 说明: * 编译mt7601u驱动的时候遇到的编译错误. * * 2017-9-15 深圳 龙华樟坑村 曾剑锋 ************************************************************

编译-'printk' undeclared应该如何解决??

问题描述 'printk' undeclared应该如何解决?? #include <linux/kernel.h> #define __KERNEL__ ... void (*pFunc)(void *); printk("pFunc:[%pf]n",pFunc); //KERN_EMERG 加入了头文件和宏定义,编译时仍然出现printk' undeclared (first use this function)这样的报错 试了百度的各种方法都没用... 据说这个函数工

wpa_supplicant编译时出现 undefined reference to `sha256_vector&amp;amp;#39;

问题描述 wpa_supplicant编译时出现 undefined reference to `sha256_vector' CC ../src/drivers/drivers.c CC ../src/l2_packet/l2_packet_linux.c ../src/wps/wps_common.o: In function wps_derive_keys': /home/atheros/Atheros-P2P/wpa_supplicant-2.1/wpa_supplicant/../sr

keil编译时 error C141: syntax error near &amp;amp;#39;)&amp;amp;#39;

问题描述 keil编译时 error C141: syntax error near ')' 简单的烟雾报警程序中先是缺少了lcd1602的头文件 我从网上找了添加了后发现有错误 求大神帮我解答一下疑问 谢谢了 /******************************** FILE NAME: lcd1602.c CHIP TYPE: AT89C51 CLOCK FREQUENCY: 12MHZ IDE: VSMStudio COMPILER: IAR for 8051 TIME: Sep

实现一个简单的Java编译时注解处理器

简介 Java注解又称Java标注,是Java语言5.0版本开始支持加入源代码的特殊语法元数据.Java语言中的类.方法.变量.参数和包等都可以被标注.Java标注和Javadoc不同,标注有自反性.在编译器生成类文件时,标注可以被嵌入到字节码中,由Java虚拟机执行时获取到标注.根据元注解@Retention指定值的不同,注解可分为SOURCE.CLASS和RUNTIME三种类型.当被声明为SOURCE时,注解仅仅在源码级别被保留,编译时被丢弃:声明为CLASS时,注解会由编译器记录在clas

cwinthread-在VS2005中单个工程里建立两个CWinThread的派生类,编译时发出C2084错误,怎么解决?

问题描述 在VS2005中单个工程里建立两个CWinThread的派生类,编译时发出C2084错误,怎么解决? =====描述===== 我在VS2005中用项目->添加类添加了两个CWinThread类的派生类--CMyThread与CFloatWndThread,现在编译时报C2084错误,百度上都说是函数有定义了两个函数体,但我没发现有什么重定义啊~~请问大家有何高招?? =====代码===== //MyThread.h #include "stdafx.h" // CM

MSBuild + MSILInect实现编译时AOP之预览

      在本文之前的前几篇浅谈.NET编译时注入(C#-->IL).浅谈VS编译自定义编译任务-MSBuild Task(csproject).编译时MSIL注入--实践Mono Cecil(1)已经讨论了MSBuild和Mono.Cicel.在这里我们将会利用它来实现一个简单的编译时AOP注入机制(这里所说的编译时是指c#到MSIL的预编译过程).我更倾向于像EL(微软企业库框架)这类动态AOP.编译时AOP有PostSharp这种被称之为静态AOP框架,其优势在于直接代码语句,性能更好,

MSBuild + MSILInect实现编译时AOP-改变前后对比

    实现静态AOP,就需要我们在预编译时期,修改IL实现对代码逻辑的修改.Mono.Cecil就是一个很好的IL解析和注入框架,参见编译时MSIL注入--实践Mono Cecil(1).   我的思路为:在编译时将加有继承制MethodInterceptBaseAttribute标签的原方法,重新组装成一个方法(并加上[CompilerGenerated]标签),在加入横切注入接口前后代码,调用此方法. 比如代码: [TestAOPAttribute(Order = 1)] public C