iam*_*ind 7 c c++ boolean keyword
我提到了这个问题,其中一些答案表明这bool是一个整体类型(IDE也将其视为关键字).
但是,没有一个答案表明cplusplus中提供的信息,它表示这bool是一个通过添加的宏<cstdbool>(在这种情况下,编译器可能在编译时允许隐式添加此头bool).这是g ++版本的<stdbool.h>.
究竟bool是什么呢?一个整数类型的关键字或宏?
Lig*_*ica 16
bool是一个宏.有没有内置类型或关键字通过的名称bool在C,所以典型的实现方式使用标准库到#define true和false到1和0分别.诸如if语句的规则是用"零"和"非零"表达式定义的true,因此依赖于和的扩展宏定义false:
[C99: 6.8.4.1/2]:在两种形式中,如果表达式比较不等于0,则执行第一个子语句.在else表单中,如果表达式比较等于0,则执行第二个子语句.如果通过标签到达第一个子语句,则第二个子语句不是执行.
为方便起见,C99添加了内置的中间类型_Bool,并且通常#define bool使用这种语言的实现_Bool.因此定义了这种类型:
[C99: 6.2.5/2]:声明为type的对象_Bool足以存储值0和1.
这允许与C++程序更好的兼容性,其中可能包括使用该bool类型的函数声明; 但是,真的#define _Bool int可能已经足够了.
bool既是内置类型又是关键字.您提供的链接并不是说boolC++中的宏.它说:
此标头的C的目的是添加bool类型以及true和false值作为宏定义.
在直接支持这些内容的C++中,标头只包含一个宏,可用于检查是否支持该类型.
这是正确的.
在语义上(也就是代码的"含义"),在C++中[C++11: 3.9.1/2]定义bool为一个整数类型.
词法上(即代码中的"外观")[C++11: 2.12/1]将其列为关键字.实际上,作为整数类型名称一部分的所有标记也是关键字,包括(但不限于):
intunsignedlongboolshortsigned但是,它从来就不是 C++中的宏.相反,您可以获得一个宏__bool_true_false_are_defined,您可以在多语言代码中使用该宏来bool根据您是使用C还是C++ 来切换处理; 我不确定我能想到一个有用的例子,请注意.
| 归档时间: |
|
| 查看次数: |
17928 次 |
| 最近记录: |