2012-01-04 86 views
40

任何人都可以解释我在_Bool和Bool数据类型之间有什么区别吗? 例如C中_Bool和bool类型的区别?

_Bool x = 1; 
    bool y = true; 

    printf("%d", x); 
    printf("%d", y); 
+1

'bool'也必须是typedef,C没有那种类型。 – 2012-01-04 09:11:47

+0

类似于_Complex vs complex。 – 2014-09-17 10:58:42

回答

87

在C99中加入这些数据类型的宏。由于bool在C99之前未被保留,因此它们使用_Bool关键字(保留)。

bool如果包含stdbool.h,则为_Bool的别名。基本上,包括stdbool.h标题表示您的代码是正确的,标识符bool为'保留',即您的代码不会将其用于自己的目的(类似地,标识符为truefalse)。

+4

+1包括历史记录。 – Lindydancer 2012-01-04 09:21:08

+18

长期的意图似乎是标准最终会被修改为使bool成为关键字。这是第1步,您可以使用获取bool宏,并且您仍然可以为自己的恶意目的取消定义或重新定义它。 步骤2将拒绝从中取消定义或重新定义bool以劝阻这样的欺骗。然后第3步是使布尔完全像_Bool和标记_Bool不赞成使用关键字。在这条漫长的道路(比如现在的十年或者二十年)结束时,标准的C代码将会有一个bool类型,新的程序员不会知道它从来没有缺少过。 – tialaramex 2012-08-31 10:54:38

+2

我不明白为什么这需要花二十年时间,因为这是一个非常明显的改进。不喜欢此更改的代码仍可使用当前编译器版本进行编译。 – 2013-08-31 16:45:34

13

没有区别。

bool是在stdbool.h中扩展为_Bool的宏。

true为展开至1 stdbool.h

相关问题