7
votes

En-tête avec définitions de taille de la mémoire

Y a-t-il une en-tête C / C ++ standard avec des définitions d'octets, kilobyte, mégaoctet, ...? Je ne veux pas faire de ses propres définitions. C'est sale à mon avis.

Exemple: xxx


4 commentaires

Pourquoi au monde en auriez-vous besoin en premier lieu? Ces choses ne sont pas dépendantes de la plate-forme ...


Il n'y a pas. Cependant, certaines personnes ont convenu d'appeler 1024 * 1024 A MEGA et 1000 * 1000 A mégaoctet .


@alk n'a jamais entendu parler de cette convention auparavant. Avez-vous une référence?


Un en-tête standard ISO C ++ définirait un mégaoctet sous forme de 1.000.000 octets, par ISO / CEI 80000-13. Aussi, par la norme C ++, qui ne signifierait pas nécessairement un million d'octets. Est-ce vraiment ce que vous vouliez?


4 Réponses :


18
votes

Non, il n'y a pas de définitions standard de ce type. Probablement parce que la valeur ajoutée serait très petite.

Vous voyez souvent des choses comme: p> xxx pré>

ceci utilise le changement de vitesse pour exprimer l'opération x em > * 2 10 sup> identique à celui x em> * 1,024, et le même pour 2 20 sup> 1 024 * 1 024, soit 1 048 576. Cela "exploite" le fait des définitions classiques des kilobytes, des mégaoctets, etc. des pouvoirs de deux, en informatique. P>

la distribution à Taille_t code> est bon car ce sont des tailles et Nous voulons les avoir facilement utilisables comme des arguments par exemple malloc () code>. p>

Utilisation ci-dessus, il devient assez pratique d'utiliser celles-ci dans le code: p> xxx pré>

ou Si (statbuf.st_size> = kb (8)) { printf ("fichier est 8 kb (ou plus grand) \ n"); } p>

Mais vous pouvez bien sûr, il suffit de les utiliser pour définir davantage: P>

#define MEGABYTE MB(1)


2 commentaires

D'accord. J'ai fait ma propre définition #define mégabyte 1048576 . Mais votre réponse est assez cool.


Notez que c'est mégaoctet à l'octet. Si vous voulez des octets à Megabyte, vous faites x >> 20



2
votes

Il n'y a pas. Mais pourquoi vous ne les faites pas par votre propre: xxx

et aussi xxx

En savoir plus ...


1 commentaires

Je suggérerais vraiment ze_t comme type de tailles. Parce que c'est un type de tailles.



13
votes

Comme d'autres réponses indiquées, il n'y a pas. Une belle solution en C ++ 11 consiste à utiliser littéraux définis par l'utilisateur: xxx


1 commentaires

Encore mieux, j'aime l'idée de y combiner avec les modèles de ratio C ++ utilisés par STD :: Chrono. De cette façon, toutes les unités de «taille» ont leur propre type avec une conversion implicite entre eux.



1
votes

Pas que cela ajoute beaucoup, mais j'aime bien ce formulaire: xxx

que vous pouvez utiliser comme xxx


0 commentaires