Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Emmanuel Delahaye
In 'fr.comp.lang.c', Marc Lasson wrote:
- Est-ce qu'il est possible que "int8_t" soit défini sur un système où
Je ne crois pas. Les formats fixes sont optionnels. Ils sont définis par la norme, mais pas imposés par la norme. (Encore un cas typique de code standard non portable!)
CHAR_BITS est différent de 8 ?
- Si oui, comment peut-on allouer un tableau de 17 int8_t ?
Je ne vois pas trop à quoi servent ces types de taille fixe...
Tu demandes un tableau de 17 unsigned char, tu les auras toujours, sur n'importe quelle machine. Les unsigned char feront au moins 8 bits. Si il font plus, ça ne dérange personne (à part qu'on a le sentiment de perdre de la place, mais comme le montre l'architecture des DSP les plus courants, il est difficile de concilier rapidité et optimisation de la mémoire).
-- -ed- get my email here: http://marreduspam.com/ad672570 The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html C-reference: http://www.dinkumware.com/manuals/reader.aspx?libÉ9 FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
In 'fr.comp.lang.c', Marc Lasson <marc.lasson@laposte.net> wrote:
- Est-ce qu'il est possible que "int8_t" soit défini sur un système
où
Je ne crois pas. Les formats fixes sont optionnels. Ils sont définis par la
norme, mais pas imposés par la norme. (Encore un cas typique de code standard
non portable!)
CHAR_BITS est différent de 8 ?
- Si oui, comment peut-on allouer un tableau de 17 int8_t ?
Je ne vois pas trop à quoi servent ces types de taille fixe...
Tu demandes un tableau de 17 unsigned char, tu les auras toujours, sur
n'importe quelle machine. Les unsigned char feront au moins 8 bits. Si il
font plus, ça ne dérange personne (à part qu'on a le sentiment de perdre de
la place, mais comme le montre l'architecture des DSP les plus courants, il
est difficile de concilier rapidité et optimisation de la mémoire).
--
-ed- get my email here: http://marreduspam.com/ad672570
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
C-reference: http://www.dinkumware.com/manuals/reader.aspx?libÉ9
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
- Est-ce qu'il est possible que "int8_t" soit défini sur un système où
Je ne crois pas. Les formats fixes sont optionnels. Ils sont définis par la norme, mais pas imposés par la norme. (Encore un cas typique de code standard non portable!)
CHAR_BITS est différent de 8 ?
- Si oui, comment peut-on allouer un tableau de 17 int8_t ?
Je ne vois pas trop à quoi servent ces types de taille fixe...
Tu demandes un tableau de 17 unsigned char, tu les auras toujours, sur n'importe quelle machine. Les unsigned char feront au moins 8 bits. Si il font plus, ça ne dérange personne (à part qu'on a le sentiment de perdre de la place, mais comme le montre l'architecture des DSP les plus courants, il est difficile de concilier rapidité et optimisation de la mémoire).
-- -ed- get my email here: http://marreduspam.com/ad672570 The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html C-reference: http://www.dinkumware.com/manuals/reader.aspx?libÉ9 FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
Emmanuel Delahaye
In 'fr.comp.lang.c', Emmanuel Delahaye wrote:
Tu demandes un tableau de 17 unsigned char, tu les auras toujours, sur n'importe quelle machine. Les unsigned char feront au moins 8 bits. Si il font plus, ça ne dérange personne (à part qu'on a le sentiment de perdre de la place, mais comme le montre l'architecture des DSP les plus courants, il est difficile de concilier rapidité et optimisation de la mémoire).
#define CHAR_BIT 16 /* NUMBER OF BITS IN TYPE CHAR */ #define SCHAR_MAX 32767 /* MAX VALUE FOR SIGNED CHAR */ #define SCHAR_MIN (-SCHAR_MAX-1) /* MIN VALUE FOR SIGNED CHAR */ #define UCHAR_MAX 65535u /* MAX VALUE FOR UNSIGNED CHAR */ #define CHAR_MIN SCHAR_MIN /* MIN VALUE FOR CHAR */ #define CHAR_MAX SCHAR_MAX /* MAX VALUE FOR CHAR */ #define MB_LEN_MAX 1
#define SHRT_MAX 32767 /* MAX VALUE FOR SHORT */ #define SHRT_MIN (-SHRT_MAX-1) /* MIN VALUE FOR SHORT */ #define USHRT_MAX 65535u /* MAX VALUE FOR UNSIGNED SHORT */
#define INT_MAX 32767 /* MAX VALUE FOR INT */ #define INT_MIN (-INT_MAX-1) /* MIN VALUE FOR INT */ #define UINT_MAX 65535u /* MAX VALUE FOR UNSIGNED INT */
#define LONG_MAX 2147483647 /* MAX VALUE FOR LONG */ #define LONG_MIN (-LONG_MAX-1) /* MIN VALUE FOR LONG */ #define ULONG_MAX 4294967295 /* MAX VALUE FOR UNSIGNED LONG */
#endif
-- -ed- get my email here: http://marreduspam.com/ad672570 The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html C-reference: http://www.dinkumware.com/manuals/reader.aspx?libÉ9 FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
In 'fr.comp.lang.c', Emmanuel Delahaye <emdelYOURBRA@noos.fr> wrote:
Tu demandes un tableau de 17 unsigned char, tu les auras toujours, sur
n'importe quelle machine. Les unsigned char feront au moins 8 bits. Si
il font plus, ça ne dérange personne (à part qu'on a le sentiment de
perdre de la place, mais comme le montre l'architecture des DSP les plus
courants, il est difficile de concilier rapidité et optimisation de la
mémoire).
#define CHAR_BIT 16 /* NUMBER OF BITS IN TYPE CHAR */
#define SCHAR_MAX 32767 /* MAX VALUE FOR SIGNED CHAR */
#define SCHAR_MIN (-SCHAR_MAX-1) /* MIN VALUE FOR SIGNED CHAR */
#define UCHAR_MAX 65535u /* MAX VALUE FOR UNSIGNED CHAR */
#define CHAR_MIN SCHAR_MIN /* MIN VALUE FOR CHAR */
#define CHAR_MAX SCHAR_MAX /* MAX VALUE FOR CHAR */
#define MB_LEN_MAX 1
#define SHRT_MAX 32767 /* MAX VALUE FOR SHORT */
#define SHRT_MIN (-SHRT_MAX-1) /* MIN VALUE FOR SHORT */
#define USHRT_MAX 65535u /* MAX VALUE FOR UNSIGNED SHORT */
#define INT_MAX 32767 /* MAX VALUE FOR INT */
#define INT_MIN (-INT_MAX-1) /* MIN VALUE FOR INT */
#define UINT_MAX 65535u /* MAX VALUE FOR UNSIGNED INT */
#define LONG_MAX 2147483647 /* MAX VALUE FOR LONG */
#define LONG_MIN (-LONG_MAX-1) /* MIN VALUE FOR LONG */
#define ULONG_MAX 4294967295 /* MAX VALUE FOR UNSIGNED LONG */
#endif
--
-ed- get my email here: http://marreduspam.com/ad672570
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
C-reference: http://www.dinkumware.com/manuals/reader.aspx?libÉ9
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
Tu demandes un tableau de 17 unsigned char, tu les auras toujours, sur n'importe quelle machine. Les unsigned char feront au moins 8 bits. Si il font plus, ça ne dérange personne (à part qu'on a le sentiment de perdre de la place, mais comme le montre l'architecture des DSP les plus courants, il est difficile de concilier rapidité et optimisation de la mémoire).
#define CHAR_BIT 16 /* NUMBER OF BITS IN TYPE CHAR */ #define SCHAR_MAX 32767 /* MAX VALUE FOR SIGNED CHAR */ #define SCHAR_MIN (-SCHAR_MAX-1) /* MIN VALUE FOR SIGNED CHAR */ #define UCHAR_MAX 65535u /* MAX VALUE FOR UNSIGNED CHAR */ #define CHAR_MIN SCHAR_MIN /* MIN VALUE FOR CHAR */ #define CHAR_MAX SCHAR_MAX /* MAX VALUE FOR CHAR */ #define MB_LEN_MAX 1
#define SHRT_MAX 32767 /* MAX VALUE FOR SHORT */ #define SHRT_MIN (-SHRT_MAX-1) /* MIN VALUE FOR SHORT */ #define USHRT_MAX 65535u /* MAX VALUE FOR UNSIGNED SHORT */
#define INT_MAX 32767 /* MAX VALUE FOR INT */ #define INT_MIN (-INT_MAX-1) /* MIN VALUE FOR INT */ #define UINT_MAX 65535u /* MAX VALUE FOR UNSIGNED INT */
#define LONG_MAX 2147483647 /* MAX VALUE FOR LONG */ #define LONG_MIN (-LONG_MAX-1) /* MIN VALUE FOR LONG */ #define ULONG_MAX 4294967295 /* MAX VALUE FOR UNSIGNED LONG */
#endif
-- -ed- get my email here: http://marreduspam.com/ad672570 The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html C-reference: http://www.dinkumware.com/manuals/reader.aspx?libÉ9 FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/
Alexandre BACQUART
Emmanuel Delahaye wrote:
Je ne vois pas trop à quoi servent ces types de taille fixe...
Je pense que ce sont des types bas-niveau qui manquaient à C dans le cas où l'on veut forcer le compilateur à ne traiter que X bits sur une achitecture capable de traiter des entiers de X bits, mais sur laquelle int_leastX_t est susceptible d'avoir une taille supérieure (est-ce possible ?). Sinon je ne vois pas pourquoi ils auraient été rajoutés...
C'est de la pûre économie de mémoire dans un contexte bas-niveau où l'objectif de portabilité 100% est de toutes façons perdu d'avance. M'enfin bon, il est vrai que de simples typedefs peuvent les remplacer...
Au passage, pendant qu'on y est, y a-t-il d'autres types dans <stdint.h> qui ne sont pas imposés par la norme ?
-- Tek
Emmanuel Delahaye wrote:
Je ne vois pas trop à quoi servent ces types de taille fixe...
Je pense que ce sont des types bas-niveau qui manquaient à C dans le cas
où l'on veut forcer le compilateur à ne traiter que X bits sur une
achitecture capable de traiter des entiers de X bits, mais sur laquelle
int_leastX_t est susceptible d'avoir une taille supérieure (est-ce
possible ?). Sinon je ne vois pas pourquoi ils auraient été rajoutés...
C'est de la pûre économie de mémoire dans un contexte bas-niveau où
l'objectif de portabilité 100% est de toutes façons perdu d'avance.
M'enfin bon, il est vrai que de simples typedefs peuvent les remplacer...
Au passage, pendant qu'on y est, y a-t-il d'autres types dans <stdint.h>
qui ne sont pas imposés par la norme ?
Je ne vois pas trop à quoi servent ces types de taille fixe...
Je pense que ce sont des types bas-niveau qui manquaient à C dans le cas où l'on veut forcer le compilateur à ne traiter que X bits sur une achitecture capable de traiter des entiers de X bits, mais sur laquelle int_leastX_t est susceptible d'avoir une taille supérieure (est-ce possible ?). Sinon je ne vois pas pourquoi ils auraient été rajoutés...
C'est de la pûre économie de mémoire dans un contexte bas-niveau où l'objectif de portabilité 100% est de toutes façons perdu d'avance. M'enfin bon, il est vrai que de simples typedefs peuvent les remplacer...
Au passage, pendant qu'on y est, y a-t-il d'autres types dans <stdint.h> qui ne sont pas imposés par la norme ?
-- Tek
Antoine Leca
En 40f0543c$0$12202$, Alexandre BACQUART va escriure:
Au passage, pendant qu'on y est, y a-t-il d'autres types dans <stdint.h> qui ne sont pas imposés par la norme ?
Tout plein. Par exemple, uint_least2591_t.
Antoine
En 40f0543c$0$12202$626a14ce@news.free.fr, Alexandre BACQUART va escriure:
Au passage, pendant qu'on y est, y a-t-il d'autres types dans
<stdint.h> qui ne sont pas imposés par la norme ?
#ifndef INT24_MAX #error int24_t n est pas defini #endif
Ca ne me parait pas raisonnable.
En quoi ? Sinon, à quoi servirait cette constante ?
- Est-ce qu'il est possible que "int8_t" soit défini sur un système où CHAR_BITS est différent de 8 ?
Je ne pense pas: la définition de CHAR_BIT est « le nombre de bits dans le plus petit objet (qui ne soit pas un champ de bits) », avec comme contrainte complémentaire d'être supérieur à 8.
Si int8_t était possible, il y aurait contradiction.
Antoine
En 40efe2eb$0$12197$626a14ce@news.free.fr, Marc Lasson va escriure:
J'ai quelques questions sur les types entiers:
- Comment peut-on, à la compilation, vérifier si un intN_t est défini
#ifndef INT24_MAX
#error int24_t n est pas defini
#endif
Ca ne me parait pas raisonnable.
En quoi ?
Sinon, à quoi servirait cette constante ?
- Est-ce qu'il est possible que "int8_t" soit défini sur un système où
CHAR_BITS est différent de 8 ?
Je ne pense pas: la définition de CHAR_BIT est « le nombre de bits dans le
plus petit objet (qui ne soit pas un champ de bits) », avec comme contrainte
complémentaire d'être supérieur à 8.
Si int8_t était possible, il y aurait contradiction.
#ifndef INT24_MAX #error int24_t n est pas defini #endif
Ca ne me parait pas raisonnable.
En quoi ? Sinon, à quoi servirait cette constante ?
- Est-ce qu'il est possible que "int8_t" soit défini sur un système où CHAR_BITS est différent de 8 ?
Je ne pense pas: la définition de CHAR_BIT est « le nombre de bits dans le plus petit objet (qui ne soit pas un champ de bits) », avec comme contrainte complémentaire d'être supérieur à 8.
Si int8_t était possible, il y aurait contradiction.
Antoine
Alexandre BACQUART
Antoine Leca wrote:
En 40f0543c$0$12202$, Alexandre BACQUART va escriure:
Au passage, pendant qu'on y est, y a-t-il d'autres types dans <stdint.h> qui ne sont pas imposés par la norme ?
Tout plein. Par exemple, uint_least2591_t.
Quel est le sens caché ? Que la norme ne se risquera jamais à imposer un entier de X bits (ou au minimum) ?
-- Tek
Antoine Leca wrote:
En 40f0543c$0$12202$626a14ce@news.free.fr, Alexandre BACQUART va escriure:
Au passage, pendant qu'on y est, y a-t-il d'autres types dans
<stdint.h> qui ne sont pas imposés par la norme ?
Tout plein. Par exemple, uint_least2591_t.
Quel est le sens caché ? Que la norme ne se risquera jamais à imposer
un entier de X bits (ou au minimum) ?
En 40f0543c$0$12202$, Alexandre BACQUART va escriure:
Au passage, pendant qu'on y est, y a-t-il d'autres types dans <stdint.h> qui ne sont pas imposés par la norme ?
Tout plein. Par exemple, uint_least2591_t.
Quel est le sens caché ? Que la norme ne se risquera jamais à imposer un entier de X bits (ou au minimum) ?
-- Tek
Antoine Leca
En 40f2b65c$0$15314$, Alexandre BACQUART va escriure:
Antoine Leca wrote:
En 40f0543c$0$12202$, Alexandre BACQUART va escriure:
Au passage, pendant qu'on y est, y a-t-il d'autres types dans <stdint.h> qui ne sont pas imposés par la norme ?
Tout plein. Par exemple, uint_least2591_t.
Quel est le sens caché ?
<stdint.h> et <inttypes.h> sont une aide au portage de certains types de programmes (interfaçage). En ce sens, ils héritent des contraintes générales de la norme, comme par exemple le fait que la norme n'oblige pas les char à faire 8 bits, ni les long 32, etc. En résumé, rien n'est imposé.
[ En fait si: sur une machine en complément à 2 organisée "classiquement" sur une base 8/16/32 bits, les types [u]int8/16/32/64_t doivent être définis. Cela couvre l'utilisation "classique" de <inttypes.h>, donc améliore le spectre d'utilisation. ]
Que la norme ne se risquera jamais à imposer un entier de X bits (ou au minimum) ?
Comprend pas.
En 40f2b65c$0$15314$626a14ce@news.free.fr, Alexandre BACQUART va escriure:
Antoine Leca wrote:
En 40f0543c$0$12202$626a14ce@news.free.fr, Alexandre BACQUART va
escriure:
Au passage, pendant qu'on y est, y a-t-il d'autres types dans
<stdint.h> qui ne sont pas imposés par la norme ?
Tout plein. Par exemple, uint_least2591_t.
Quel est le sens caché ?
<stdint.h> et <inttypes.h> sont une aide au portage de certains types de
programmes (interfaçage). En ce sens, ils héritent des contraintes générales
de la norme, comme par exemple le fait que la norme n'oblige pas les char à
faire 8 bits, ni les long 32, etc. En résumé, rien n'est imposé.
[ En fait si: sur une machine en complément à 2 organisée "classiquement"
sur une base 8/16/32 bits, les types [u]int8/16/32/64_t doivent être
définis. Cela couvre l'utilisation "classique" de <inttypes.h>, donc
améliore le spectre d'utilisation. ]
Que la norme ne se risquera jamais à imposer
un entier de X bits (ou au minimum) ?
En 40f2b65c$0$15314$, Alexandre BACQUART va escriure:
Antoine Leca wrote:
En 40f0543c$0$12202$, Alexandre BACQUART va escriure:
Au passage, pendant qu'on y est, y a-t-il d'autres types dans <stdint.h> qui ne sont pas imposés par la norme ?
Tout plein. Par exemple, uint_least2591_t.
Quel est le sens caché ?
<stdint.h> et <inttypes.h> sont une aide au portage de certains types de programmes (interfaçage). En ce sens, ils héritent des contraintes générales de la norme, comme par exemple le fait que la norme n'oblige pas les char à faire 8 bits, ni les long 32, etc. En résumé, rien n'est imposé.
[ En fait si: sur une machine en complément à 2 organisée "classiquement" sur une base 8/16/32 bits, les types [u]int8/16/32/64_t doivent être définis. Cela couvre l'utilisation "classique" de <inttypes.h>, donc améliore le spectre d'utilisation. ]
Que la norme ne se risquera jamais à imposer un entier de X bits (ou au minimum) ?