web-dev-qa-db-fra.com

Quelle est la différence entre UInt8 et uint8_t

Quelle est la différence entre UInt8 Et uint8_t, Ou UInt16 Et unit16_t?

Qu'implique le _t?

38
user1845029

En C99, les types d'entiers de base disponibles (ceux sans _t) ont été jugés insuffisants, car leurs tailles réelles peuvent varier d'un système à l'autre.

Ainsi, la norme C99 comprend des définitions de plusieurs nouveaux types d'entiers pour améliorer la portabilité des programmes. Les nouveaux types sont particulièrement utiles dans les environnements embarqués.

Tous les nouveaux types sont suffixés d'un _t et sont garantis pour être définis uniformément sur tous les systèmes.

Pour plus d'informations, consultez la section types de nombres entiers à largeur fixe de l'article de wikipedia sur Stdint .

38
vdbuilder

La principale différence est que les types uintX_t Sont du C standard défini par C99 et plus tard alors que UIntX ne l'est pas. Cela a des implications sur la portabilité du code. Le code utilisant les types uintX_t Peut être compilé sur n'importe quel compilateur C standard sans aucune autre dépendance. Le code qui utilise UIntX d'autre part, doit soit définir ces types lui-même, soit dépendre d'une bibliothèque ou d'un framework qui le fait.

Je ne pense pas qu'Objective-C en tant que tel définit des types d'entiers supplémentaires, mais il se pourrait bien que votre framework (Coacoa, OpenStep?) Le fasse. Si votre code n'a aucun sens en dehors du cadre, utilisez ce qui est idiomatique dans le contexte du cadre. Sinon, essayez de vous en tenir aux types standard.

0
harald

ils sont normalement utilisés comme types de données typedef. "_t" représente un type de données typedef. nous donnons un tel nom afin qu'ils puissent être utilisés et lus facilement à travers tout le fichier ou une énorme base de code.

* UInt8 et uint8_t - Char *

typedef unit8_t caractère non signé

* UInt16 et unit16_t *

typedef unit16_t unsigned int (sur un compilateur 16 bits)

0
PKS