293 votes

Est un type natif de C-bool ?

J’ai remarqué que le code de noyau Linux utilise bool, mais je pensais que bool était un type C++. Est bool une extension standard de C (par exemple, ISO C90) ou GCC ?

408voto

AndreyT Points 139512

``Il existe dans l’actuelle C ANSI - C99, mais pas en C89/90.

En C99 le type natif est en fait appelé , tandis que est une bibliothèque standard définie dans (qui résout supposée ). Objets de type contenir 0 ou 1, tandis que et sont également des macros de .

129voto

Josh Kelley Points 24438

C99 ajouté un builtin _Bool type de données (voir Wikipédia pour plus de détails), et si vous #include <stdbool.h>, il fournit bool comme une macro _Bool.

Vous avez demandé sur le noyau Linux en particulier. Il suppose la présence d' _Bool et fournit un bool typedef lui-même dans include/linux/types d'.h.

34voto

robjb Points 3049

C99 a dans stdbool.h, mais en C90, il doit être défini comme un typedef ou enum.

Vous pouvez également :

Wikipedia est votre ami. :)

31voto

BobbyShaftoe Points 19925

Non, il n'y a pas d' bool dans la norme ISO C90.

Voici une liste des mots clés dans la norme C (pas C99):

  • auto
  • break
  • case
  • char
  • const
  • continue
  • default
  • do
  • double
  • else
  • enum
  • extern
  • float
  • for
  • goto
  • if
  • int
  • long
  • register
  • return
  • short
  • signed
  • static
  • struct
  • switch
  • typedef
  • union
  • unsigned
  • void
  • volatile
  • while

Voici un article de l'examen de certains autres différences avec C comme utilisé dans le noyau et la norme: http://www.ibm.com/developerworks/linux/library/l-gcc-hacks/index.html

12voto

pmg Points 52636

``est un mot clé dans C99 : il spécifie un type, comme ou .

6.5.2

2 un objet déclaré comme type _Bool est suffisamment grande pour stocker les valeurs 0 et 1.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X