Linux カーネル コードで bool が使用されていることに気付きましたが、bool は C++ 型だと思っていました。bool は標準の C 拡張 (ISO C90 など) ですか、それとも GCC 拡張ですか?
ベストアンサー1
bool
現在の C - C99 には存在しますが、C89/90 には存在しません。
C99 では、ネイティブ型は実際には と呼ばれ_Bool
、 はbool
で定義された標準ライブラリ マクロですstdbool.h
(これは に解決されると予想されます_Bool
)。 型のオブジェクトは_Bool
0 または 1 を保持しますが、true
とfalse
も からのマクロですstdbool.h
。
ちなみに、これは、が含まれていない限り、 C プリプロセッサが#if true
として解釈することを意味します。一方、C++ プリプロセッサは、言語リテラルとしてネイティブに認識する必要があります。#if 0
stdbool.h
true