si j'utilise l'opérateur sizeof
et que j'utilise size_t
dans mon code, dois-je nécessairement inclure stddef.h
? Je n'ai pas inclus stddef.h
, et mon code se compile sans avertissement avec MVS2008 et avec Borland C++ BuilderX.
Merci beaucoup...
sizeof()
, tout en ressemblant à un appel de fonction, est en fait un opérateur et fait partie du noyau du langage. Pas d'inclusion nécessaire.
size_t
est défini dans différents en-têtes: stddef.h
, string.h
, stdlib.h
, et stdio.h
. L'inclusion de l'un d'eux suffit pour utiliser size_t
dans votre code.
Non, vous pouvez inclure un en-tête qui inclut à son tour stddef.h
La définition size_t doit être fournie à un morceau de code de référence en incluant stdlib.h fichier d'en-tête. En fait, la plupart des implémentations ne l'ont pas défini littéralement dans ce fichier mais à la place sub inclure le fichier stddef.h comme par exemple la bibliothèque standard du compilateur C GNU C). L'inclusion directe de stddef.h pour le code d'application est totalement valide et peut donc remplacer stdlib.h dans les cas où aucun autre membre de ce fichier n'est nécessaire ou souhaité.
Dans c, la définition de size_t
provient de plusieurs en-têtes: stddef.h
, stdio.h
, stdlib.h
, string.h
, time.h
ou wchar.h
.
Il existe un certain nombre de façons que l'implémentation du compilateur peut arranger pour cela, mais notez qu'une façon que ne peut pas être utilisée est d'avoir le compilateur inclus l'un de ces en-têtes pour vous derrière votre dos - ce n'est pas quelque chose qu'un compilateur C est autorisé à faire (cette restriction a été levée pour C++, qui est autorisé à inclure n'importe quel en-tête standard à ses propres fins).