打印
[开发工具]

怎样一劳永逸定义 bool?

[复制链接]
1011|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
情场探花|  楼主 | 2016-5-8 21:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
诸位好。我接手了一个别人的程序,keil, STM32103。因为是刚接手,所以第一步是什么都不改、编译通过。结果遇到一个问题。
整个程序包括多个 c 文件,每个 c 当然又包括了一堆 h。说 bool 未定义。
我试着在 main.c 开头处加上  
typedef enum _BOOL_
{
        FALSE,
        TRUE
}bool;

结果 main.c 用到的这些 h 都认识 bool 了。可是,其他那些 c 用到的 h 还是不认识 bool。我要是一个个 typedef 过来,也实在吃不消啊。
请问有什么办法一次性搞定呢?
多谢!!
沙发
zhuotuzi| | 2016-5-8 23:12 | 只看该作者
查找替换应该不错吧。如果文件少的话。

使用特权

评论回复
板凳
NF同学| | 2016-5-8 23:43 | 只看该作者
难道不能#ifndef   #define #endif 吗?

使用特权

评论回复
地板
情场探花|  楼主 | 2016-5-9 07:11 | 只看该作者
查找替换当然不难了,但是这样就会修改原来的程序,我想尽量不要动原来的程序,人家那么写肯定有道理的。
当然也可以 #ifndef   #define #endif ,但那样还是得在每个文件里都加上这句。
再说了,C 里面本来是没有 bool 的,所以人家肯定是在某个地方定义了之后,才能在各个文件里使用。我就想知道他是在哪里定义的。

使用特权

评论回复
5
xyz549040622| | 2016-5-9 07:21 | 只看该作者
情场探花 发表于 2016-5-9 07:11
查找替换当然不难了,但是这样就会修改原来的程序,我想尽量不要动原来的程序,人家那么写肯定有道理的。
...

工程文件在你手里了,你找找应该有一个都包含的.h文件中定义的了。

使用特权

评论回复
6
hgjinwei| | 2016-5-9 08:03 | 只看该作者
从报未定义错误的文件开始,找包含的头文件,直到找到所有C都包含的头文件。

如果没有这个文件,那么这个"bool"就是人家编译器已经定义了的,此时,想不改都不行了。

使用特权

评论回复
7
luodewei| | 2016-5-9 23:27 | 只看该作者
碰到过,你找找老工程的stm32f10x.h,应该就有定义

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

430

主题

1160

帖子

6

粉丝