1. ホーム
  2. c

[解決済み】boolはCのネイティブ型?

2022-04-01 05:44:06

質問

Linuxカーネルのコードでboolが使われていることに気づきましたが、boolはC++の型だと思っていました。boolは標準C拡張(たとえば、ISO C90)でしょうか、それとも、GCC拡張でしょうか?

どのように解決するのですか?

bool は、現在のC - C99には存在しますが、C89/90には存在しません。

C99では、ネイティブ型は実際には _Bool 一方 bool で定義された標準ライブラリマクロです。 stdbool.h (に解決されることが期待されます)。 _Bool ). 型のオブジェクトは _Bool は0か1のどちらかを保持し、一方 truefalse からのマクロでもあります。 stdbool.h .

ちなみに、これは C プリプロセッサが #if true として #if 0 ない限り stdbool.h が含まれます。一方、C++プリプロセッサは、ネイティブに true を言語リテラルとする。