IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

type portable


Sujet :

C++

  1. #1
    Membre averti
    Inscrit en
    F�vrier 2006
    Messages
    22
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2006
    Messages : 22
    Par d�faut type portable
    bonjour

    je fais une appli qui doit �tre portable windows/linux/mac, et il me faudrait un type de 8 bits. je sais qu'il y a le type uint8_t, mais il n'a pas l'air d'appara�tre sous visual c++.

    qqun aurait-il une id�e ? le type char fait-il toujours 8 bits ?

    merci d'avance

  2. #2
    Membre chevronn�
    Avatar de bigquick
    Profil pro
    Inscrit en
    Ao�t 2002
    Messages
    356
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2002
    Messages : 356
    Par d�faut
    Par d�finition, un char fait pile 1 byte. Sur une machine "standard" (de type x86), �a fait bien 8 bits. Apparemment il y a des machines ou ce n'est pas le cas (il y a forc�ment un hic )

    Regarde ce post l� pour plus d'infos : http://www.developpez.net/forums/viewtopic.php?t=214105

  3. #3
    Membre exp�riment�
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    290
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2002
    Messages : 290
    Par d�faut
    Un char fait toujours au moins 8bits.

  4. #4
    Membre averti
    Inscrit en
    F�vrier 2006
    Messages
    22
    D�tails du profil
    Informations forums :
    Inscription : F�vrier 2006
    Messages : 22
    Par d�faut
    ok merci
    je pense que je vais opter pour le char

  5. #5
    Expert confirm�
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    D�cembre 2003
    Messages
    3 549
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 3 549
    Par d�faut
    Un char fait toujours au moins 8bits.
    C'est faux.
    Un char fait toujours exactement 1 byte, ce qui peut �tre une valeur totalement arbitraire de bits.

    je sais qu'il y a le type uint8_t, mais il n'a pas l'air d'appara�tre sous visual c++.
    Voir <stdint.h>, C99.

  6. #6
    Membre chevronn�
    Avatar de bigquick
    Profil pro
    Inscrit en
    Ao�t 2002
    Messages
    356
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2002
    Messages : 356
    Par d�faut
    Par d�finition, un char fait pile 1 byte. Sur une machine "standard" (de type x86), �a fait bien 8 bits
    A moins qu'il travaille sur une architecture "�trange" (DSP 56156 par exemple), il peut peut-�tre assumer que c'est le cas ?

    edit: ooops au temps pour moi, �a doit tourner sur Mac aussi (bien qu'ils commencent la production de Mac x86 ). Est-ce que quelqu'un pourrait confirmer qu'un "char" fait toujours 8 bits sur PowerPC ?

  7. #7
    Expert confirm�
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    D�cembre 2003
    Messages
    3 549
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 3 549
    Par d�faut
    edit: ooops au temps pour moi, �a doit tourner sur Mac aussi (bien qu'ils commencent la production de Mac x86 Wink). Est-ce que quelqu'un pourrait confirmer qu'un "char" fait toujours 8 bits sur PowerPC ?
    Oui, bien s�r.
    Il n'y a gu�re que les DSP, de nos jours, qui utilisent des bytes qui ne font pas 8 bits.

  8. #8
    Membre exp�riment�
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    290
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2002
    Messages : 290
    Par d�faut
    loufoque > la norme garenti que un char fait 1 byte et au moins 8 bits.

    il peut donc faire 8,9,12,16,32 bits mais toujours au moins 8...

  9. #9
    Membre �m�rite Avatar de reggae
    Profil pro
    Inscrit en
    Ao�t 2005
    Messages
    773
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 773
    Par d�faut
    Il y a aussi les unsigned char qui sont cod�es sur un octet, donc en principe, �a fait 8 bits...

  10. #10
    Expert confirm�
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    D�cembre 2003
    Messages
    3 549
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 3 549
    Par d�faut
    unsigned char a la m�me taille qu'un char, c'est �vident.
    Ta remarque n'a pas grand int�r�t.

    Citation Envoy� par Gandalf
    la norme garenti que un char fait 1 byte et au moins 8 bits.
    Je viens de t�l�charger le brouillon de la prochaine norme C (je croyais alors qu'on �tait dans le forum C, je me suis plant�, enfin �a change rien) et je ne vois rien de tel.
    Citation Envoy� par wg14 n1124
    A byte is composed of a contiguous sequence of bits, the number of which is implementation defined.
    Pas de restriction sur la taille d'un byte donc...

    Edit: Apparemment, une autre close (5.2.4.2.1) indique qu'effectivement, un byte doit faire au minimum 8 bits en C.
    Donc en fait un byte en C/C++ peut �tre plusieurs bytes au sens hardware du terme, dans certains cas.

  11. #11
    Membre �m�rite Avatar de reggae
    Profil pro
    Inscrit en
    Ao�t 2005
    Messages
    773
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 773
    Par d�faut
    Ta remarque n'a pas grand int�r�t.
    Je me trompe peut-�tre, mais aymeric__ souhaite peut �tre utiliser une plage de valeurs positives allant jusqu'� 255...

  12. #12
    Alp
    Alp est d�connect�
    Expert confirm�

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 36
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par d�faut
    Et en "trichant" avec un champs de bits ?
    Tu dis que ton char prend 8 bits, ca devrait �tre bon?
    Tu le mets unsigned si tu veux qu'il aille de 0 � 255, et �a ira je pense.

  13. #13
    Membre �m�rite Avatar de reggae
    Profil pro
    Inscrit en
    Ao�t 2005
    Messages
    773
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 773
    Par d�faut
    C'est exactement ce � quoi je pensais

  14. #14
    Membre �m�rite Avatar de reggae
    Profil pro
    Inscrit en
    Ao�t 2005
    Messages
    773
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 773
    Par d�faut
    Il me semble que le bool est cod� sur un bit �galement...

  15. #15
    R�dacteur/Mod�rateur
    Avatar de JolyLoic
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    5 463
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 51
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 5 463
    Par d�faut
    <mode="Tetracapillosectomie">
    Citation Envoy� par loufoque
    Je viens de t�l�charger le brouillon de la prochaine norme C (je croyais alors qu'on �tait dans le forum C, je me suis plant�, enfin �a change rien) et je ne vois rien de tel.
    Citation Envoy� par wg14 n1124
    A byte is composed of a contiguous sequence of bits, the number of which is implementation defined.
    Pas de restriction sur la taille d'un byte donc...
    Je n'ai pas la norme C, juste la norme C++. On y trouve la d�finition suivante :

    Citation Envoy� par La norme C++
    Objects declared as characters (char) shall be large enough to store any member of the implementation�s basic character set. If a character from this set is stored in a character object, the integral value of that character object is equal to the value of the single character literal form of that character. It is implementation defined whether a char object can hold negative values. Characters can be explicitly declared unsigned or signed. Plain char, signed char, and unsigned char are three distinct types. A char, a signed char, and an unsigned char occupy the same amount of storage and have the same alignment requirements (3.9); that is, they have the same object representation. For character types, all bits of the object representation participate in the value representation. For unsigned character types, all possible bit patterns of the value representation represent numbers. These requirements do not hold for other types. In any particular implementation, a plain char object can take on either the same values as a signed char or an unsigned char; which one is implementationdefined.
    Quand on sait que le basic character set contient au moins 96 caract�res (ou 100, je ne sais pas s'il faut consid�rer le basic source character set, ou le basic execution character set), �a impose 7 bits au minimum.

    De plus, on lit :
    Citation Envoy� par Le standard C++
    For each basic execution character set, the values of the members shall be nonnegative and distinct from one another.
    Je je comprends bien mon standardese, �a signifie que dans le cas o� char est sign� de mani�re �galitaire entre positifs et n�gatifs, il faut au moins 96*2 caract�res => 8 bits.

    Dans le m�me ordre d'id�es, on sait(1) que int doit pouvoir contenir au moins les valeurs allant de INT_MIN � INT_MAX, mais ces valeurs ne sont pas d�finies dans la norme C++, qui fait l� r�f�rence � la norme C que je n'ai pas. Je me suis laiss� dire que �a impliquait un codage sur au moins 16 bits pour un entier.

    </mode>

    (1) dans une note, qui est sens�e �tre non normative...
    Ma session aux Microsoft TechDays 2013 : D�velopper en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage � la d�couverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'h�sitez pas � me contacter.

  16. #16
    R�dacteur/Mod�rateur
    Avatar de JolyLoic
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    5 463
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 51
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 5 463
    Par d�faut
    Citation Envoy� par reggae
    Il me semble que le bool est cod� sur un bit �galement...
    Ce n'est pas possible. La taille d'un type quelconque est multiple de celle d'un char, qui a besoin de plus d'un bit.

    Souvent, un bool�en est g�r� sur un int (et donc, plus qu'un char), qui repr�sent le type que l'architecture g�re le plus naturellement.
    Ma session aux Microsoft TechDays 2013 : D�velopper en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage � la d�couverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'h�sitez pas � me contacter.

  17. #17
    R�dacteur/Mod�rateur
    Avatar de JolyLoic
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    5 463
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 51
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 5 463
    Par d�faut Re: type portable
    Citation Envoy� par aymeric__
    bonjour

    je fais une appli qui doit �tre portable windows/linux/mac, et il me faudrait un type de 8 bits. je sais qu'il y a le type uint8_t, mais il n'a pas l'air d'appara�tre sous visual c++.

    qqun aurait-il une id�e ? le type char fait-il toujours 8 bits ?
    Sur les architectures cit�es, oui. Par contre, selon l'architecture, le char peut �tre sign� ou non sign�. Si tu veux faire des manipulations de bits, je te conseille d'utiliser plut�t des unsigned char.
    Ma session aux Microsoft TechDays 2013 : D�velopper en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage � la d�couverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'h�sitez pas � me contacter.

  18. #18
    Membre �m�rite Avatar de reggae
    Profil pro
    Inscrit en
    Ao�t 2005
    Messages
    773
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 773
    Par d�faut
    Pour les bool, j'ai entendu dire que cela d�pendait du compilo...
    Je suis all� voir sous MSDN:
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccelng/htm/basic_43.asp
    J'y ai trouv� ceci:
    In Visual C++4.2, the Standard C++ header files contained a typedef that equated bool with int. In Visual C++ 5.0 and later, bool is implemented as a built-in type with a size of 1 byte. That means that for Visual C++ 4.2, a call of sizeof(bool) yields 4, while in Visual C++ 5.0 and later, the same call yields 1.

  19. #19
    R�dacteur/Mod�rateur
    Avatar de JolyLoic
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    5 463
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 51
    Localisation : France, Yvelines (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 5 463
    Par d�faut
    Citation Envoy� par reggae
    Pour les bool, j'ai entendu dire que cela d�pendait du compilo...
    Comme tous les types... Mais en tout cas, ce n'est jamais 1 bit.


    Citation Envoy� par reggae
    Je suis all� voir sous MSDN:
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccelng/htm/basic_43.asp
    J'y ai trouv� ceci:
    In Visual C++4.2, the Standard C++ header files contained a typedef that equated bool with int. In Visual C++ 5.0 and later, bool is implemented as a built-in type with a size of 1 byte. That means that for Visual C++ 4.2, a call of sizeof(bool) yields 4, while in Visual C++ 5.0 and later, the same call yields 1.
    Attention : 1 byte = 1 multiplet (souvent = 1 octet = 8bits)
    1 bit = 1bit
    Ma session aux Microsoft TechDays 2013 : D�velopper en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage � la d�couverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'h�sitez pas � me contacter.

  20. #20
    Membre �m�rite Avatar de reggae
    Profil pro
    Inscrit en
    Ao�t 2005
    Messages
    773
    D�tails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 773
    Par d�faut
    bool is implemented as a built-in type with a size of 1 byte.
    Donc si on suit ce que tu viens de me dire:
    1 byte = 1 multiplet (souvent = 1 octet = 8bits)
    on a des chances que �a fasse 8 bits non?

Discussions similaires

  1. [D�butant] Cr�er une application portable de type "WindowsApplication"
    Par carjo dans le forum VB.NET
    R�ponses: 8
    Dernier message: 27/08/2014, 15h00
  2. Application portable type "bande annonce", quel langage utiliser ?
    Par boubou_s dans le forum G�n�ral Conception Web
    R�ponses: 1
    Dernier message: 12/12/2006, 15h23
  3. Types portables
    Par Higestromm dans le forum C++
    R�ponses: 6
    Dernier message: 28/10/2004, 13h48
  4. Application Portable sur differents types de BDD
    Par sylvain_2020 dans le forum D�cisions SGBD
    R�ponses: 11
    Dernier message: 23/09/2003, 12h59
  5. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    R�ponses: 1
    Dernier message: 15/04/2002, 12h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo