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

Visual C++ Discussion :

Diff 32 bits et 64 bits


Sujet :

Visual C++

  1. #1
    Membre �clair�
    Inscrit en
    Avril 2005
    Messages
    1 110
    D�tails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Par d�faut Diff 32 bits et 64 bits
    Si j'ai bien lu la doc MS, les diff�rences entre du code 32 bits et 64 bits sont uniquement size_t et ptrdiff_t qui deviennent 64 bis (outre tous les pointeurs bien s�r). Le reste ne change pas, � savoir les "int" et "unsigned int" ainsi que "long" et "unsigned long" reste en 32 bits.

    Qu'en est-il des valeurs "implicites", comme les sizeof() ou les enum ?
    Par exemple si je fais
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    int i;
    i=sizeof(T);//sizeof() -> 64 bits ?
    Ne devrait-il pas y avoir un warning ?

    Autre question.
    Est-ce vrai pour tous les compilateurs 64 bits ? Ou pourrait-il y avoir des probl�mes de compatibilit� ? (� priori je ne ferais jamais de code portable autre que pour Linux, Mac et Windows, du intel quoi).

    Merci

    EDIT, j'oubliais un d�tail important: peut-on allouer des blocks m�moire de plus de 32 bits (>4Gb), avec par exemple
    char *ptr=new char[65536*65536*65536]; ?

  2. #2
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    D�tails du profil
    Informations personnelles :
    �ge : 51
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par d�faut
    Citation Envoy� par camboui Voir le message
    Ne devrait-il pas y avoir un warning ?
    Pourquoi est-ce qu'il y en aurait un ? sizeof renvoie une taille en "nombre de char", donc pourquoi la taille maximale des entiers devrait-elle jouer le moindre r�le l�-dedans ?
    EDIT : lu trop vite. Tu peux avoir un warning "Conversion may lose significant digits" ou �quivalent, cf. dernier point de r�ponse sur size_t. Toutefois, c'est tr�s mal / crade d'affecter le r�sultat d'un sizeof � autre chose qu'une variable de type size_t...

    Citation Envoy� par camboui Voir le message
    Est-ce vrai pour tous les compilateurs 64 bits ?
    C'est li� au C/C++, et non pas � la taille du mot-machine. Donc, oui, �a marche tout le temps en ce qui concerne le sizeof.
    Pour les diverses tailles des types standards, je n'ai jamais regard� explicitement ce qui �tait pr�vu je dois dire. C'est soit � voir au cas par cas, soit � blinder via des ent�tes de d�finition de type de taille donn�e / v�rification des tailles des types de base.

    Du genre :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    #if (sizeof(int)!=4)
      #pragma error Unsupported "int" size.
    #endif
    Ou :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #if (sizeof(int)==4)
      typedef int INT32 ;
    #else
      #if (sizeof(long int)==4)
        typedef long int INT32;
      #else
        #pragma error Could not find 32 bits integer type.
      #endif
    #endif
    Le plus pratique reste quand m�me, je pense, d'utiliser une librairie d'abstraction (POCO ou ACE) qui fera tout �a � ta place, et qui (en plus !) t'apportera directement la portabilit� vers tous les OS support�s par ladite librairie, � peu de choses pr�s.

    Citation Envoy� par camboui Voir le message
    EDIT, j'oubliais un d�tail important: peut-on allouer des blocks m�moire de plus de 32 bits (>4Gb), avec par exemple
    char *ptr=new char[65536*65536*65536]; ?
    Affiches "sizeof(size_t)" et tu auras la r�ponse. Si c'est 4, la r�ponse est "non". Si c'est 8, la r�ponse est "oui".
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au s�rieux, de toutes fa�ons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum ad�quat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  3. #3
    Membre �clair�
    Inscrit en
    Avril 2005
    Messages
    1 110
    D�tails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Par d�faut
    Citation Envoy� par Mac LAK Voir le message
    Toutefois, c'est tr�s mal / crade d'affecter le r�sultat d'un sizeof � autre chose qu'une variable de type size_t...
    Je vais essayer de retenir �a
    Merci.

    Le probl�me n'est pas dans les nouveaux d�veloppements.
    Mais porter des dizaines de milliers de lignes de code (dont certaines datent de l'�poque 16 bits) �crites par les zillions de personnes qui sont pass�es par l� est au del� de l'usage de librairie r�centes...

  4. #4
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    D�tails du profil
    Informations personnelles :
    �ge : 51
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par d�faut
    Dans ce cas, il faut surtout chercher les sizeof dans le code, voir � quoi ils sont affect�s, et voir si cela a une incidence en modifiant le type source et en laissant ensuite le compilo gueuler en niveau maximal de warnings.

    Toutefois, si des bouts de code proviennent du monde 16 bits, je ne saurais trop te conseiller de blinder tes fichiers � coup d'ent�tes de v�rification des tailles / types comme je te l'ai mis en exemple ci-dessus.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au s�rieux, de toutes fa�ons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum ad�quat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  5. #5
    Membre �clair�
    Inscrit en
    Avril 2005
    Messages
    1 110
    D�tails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Par d�faut
    Voici le genre de code simple qui compile et ne g�n�re aucun warning:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    std::string s;
     
    ...
     
    //genre de ligne probablement déjà modifiée lors du passage 16->32 bits:
    unsigned short u=reinterpret_cast<unsigned short>(s.length());
    fwrite(f,&u,sizeof(u));
    Bref, pas toujours �vident de d�cider ce qu'il faut faire. Surtout si on veut conserver la compatibilit� avec des fichiers binaires existants dans lesquels on a s�rialis� plein de valeurs 16 bits.

  6. #6
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    D�tails du profil
    Informations personnelles :
    �ge : 51
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par d�faut
    Ben forc�ment, avec un cast... Ceci �tant dit, tu peux, comme je te l'ai dit, chercher sizeof dans le code et regarder l'impact.

    De toutes fa�ons, un bon portage devrait, normalement, v�rifier un maximum de ligne de code si le programme n'est pas bas� int�gralement sur une librairie d'abstraction.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au s�rieux, de toutes fa�ons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum ad�quat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  7. #7
    Membre �clair�
    Inscrit en
    Avril 2005
    Messages
    1 110
    D�tails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Par d�faut
    J'ai un peu lu la doc MS � propos de l'API windows et du portage 32->64 bits.
    Edifiant, un GetFileSize() n'est pas foutu de renvoyer un entier sur 64 bits directement. Ils auraient pu faire l'effort d'adopter le mod�le LP64 au lieu LLP64. Enfin, je suppose que �a nous facilite la vie � nous, simples developpeurs

  8. #8
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    D�tails du profil
    Informations personnelles :
    �ge : 51
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par d�faut
    Citation Envoy� par camboui Voir le message
    J'ai un peu lu la doc MS � propos de l'API windows et du portage 32->64 bits.
    Edifiant, un GetFileSize() n'est pas foutu de renvoyer un entier sur 64 bits directement. Ils auraient pu faire l'effort d'adopter le mod�le LP64 au lieu LLP64. Enfin, je suppose que �a nous facilite la vie � nous, simples developpeurs
    En quel honneur la fonction GetFileSize() devrait-elle passer � 64 bits, p�tant directement toute compatibilit� binaire avec le code existant d'ailleurs, sous pr�texte d'OS 64 bits ?

    Surtout que GetFileSizeEx() existe depuis des lustres, et renvoie une valeur 64 bits...
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au s�rieux, de toutes fa�ons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum ad�quat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  9. #9
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    � propos du sizeof: Dans tous les cas, j'�viterais de passer directement le r�sultat de sizeof � printf(). Et si je veux �tre portable, je ne passerais pas un size_t non plus, Microsoft ne supportant pas le format C99 pour ces types (il faut mettre %Iu � la place).

    Why did the Win64 team choose the LLP64 model?

    HS: pourquoi utiliser un reinterpret_cast<> l� o� un static_cast suffirait?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  10. #10
    screetch
    Invit�(e)
    Par d�faut
    (HS : pourquoi utiliser un static_cast (qui cache autant l'erreur) plutot qu'un checked_numcast?

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    #include <cassert>
     
    template< typename TO, typename FROM >
    static inline TO checked_cast(FROM from)
    {
      TO to = static_cast<TO>(from);
      assert(to == dynamic_cast<TO>(from));
      return to;
    }
     
    template< typename TO, typename FROM >
    static inline TO checked_numcast(FROM from)
    {
      TO to = static_cast<TO>(from);
      assert(static_cast<FROM>(to) == from);
      return to;
    }
     
    int main()
    {
      return checked_numcast<unsigned char>(2000);
    }
    j'ajoute le static/dynamic gratuit mais il est encore plus HS, c'est juste pour moi une extension importante du C++ qui me manque (mais que l'on peut coder)

  11. #11
    R�dacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par d�faut
    Citation Envoy� par Mac LAK Voir le message
    Pour les diverses tailles des types standards, je n'ai jamais regard� explicitement ce qui �tait pr�vu je dois dire.
    C'est du sp�cifique � l'impl�mentation. Les seules choses d�finis par le standard sont sizeof(char)=1<=sizeof(short)<=sizeof(int)<=sizeof(long)(<=sizeof(long long) en C++0x) ainsi que les min repr�sentables de chacun de ces types. Ensuite chaque compilo/plateforme a le choix des tailles effectives de ces types.
    A noter que sizeof(char)=1 ne veut pas dire 1 octet, mais que la valeur de sizeof(char) est 1. Il n'y a pas d'unit� en somme.

  12. #12
    Membre �clair�
    Inscrit en
    Avril 2005
    Messages
    1 110
    D�tails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Par d�faut
    Citation Envoy� par Mac LAK Voir le message
    En quel honneur la fonction GetFileSize() devrait-elle passer � 64 bits, p�tant directement toute compatibilit� binaire avec le code existant d'ailleurs, sous pr�texte d'OS 64 bits ?

    Surtout que GetFileSizeEx() existe depuis des lustres, et renvoie une valeur 64 bits...
    Je te retourne la question...

    Je me souviens quand Bill Gates disait encore en 91-92 "mais qui donc a besoin de plus de 1Mb de m�moire ?"
    En 95 sortait Win95, du 32bits mais pas tout � fait.
    En 2001 seulement sortait WinXP, le premier "bon" OS correct de MS (je fait l'impasse sur Win 3.51 et NT4).

    Maintenant je r�ponds � ta question: parce que Bill n'�tait pas un anticipateur ni un visionnaire, et l'API windows a �t� mal con�ue.
    On va en payer les pots cass�s pendant longtemps encore.

  13. #13
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    D�tails du profil
    Informations personnelles :
    �ge : 51
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par d�faut
    Citation Envoy� par camboui Voir le message
    Maintenant je r�ponds � ta question: parce que Bill n'�tait pas un anticipateur ni un visionnaire, et l'API windows a �t� mal con�ue.
    On va en payer les pots cass�s pendant longtemps encore.
    Microsoft assure quelque chose d'assez inconnu sous Linux, � savoir la compatibilit� binaire ascendante, sans recompilation, et ceci depuis bient�t 30 ans... J'ai de tr�s tr�s vieux programmes DOS qui continuent de tourner sur XP, par exemple, et j'appr�cie beaucoup cette fonctionnalit� qui, dans la majorit� des cas, n'oblige pas � recompiler et/ou abandonner un programme suite � un changement d'OS... Sauf ceux �crits par (et comme) des gorets bien s�r, qui survivent rarement aux �volutions de Windows. Faut dire aussi qu'� force de taper dans l'API Win32 sans en lire la doc, ni tester les r�sultats, ni respecter les contraintes d'entr�es, il faut bien que �a explose un jour.

    Modifier la taille des donn�es de la fonction casserait cette r�trocompatibilit� des anciennes applications sans rien apporter de concret.
    La base m�me d'une bonne API, c'est de ne JAMAIS modifier la mani�re dont fonctionne une m�thode de l'API : soit on en fait une nouvelle, �tendue, soit on la passe en deprecated. Mais la modifier, c'est le sympt�me d'une API extr�mement mal con�ue au contraire.

    Par rapport aux types d�finis dans l'API Win32, n'oublie pas qu'il n'y a pas que le C/C++ qui s'interface avec ladite API, d'o� n�cessit� d'abstraire un minimum les types... Mais si les types � taille fixe te sont indispensable, la page Common Data Types te montrera que ces types existent depuis quelques temps d�j�, il ne tient qu'� toi de les utiliser. Qu'est-ce que �a peut bien te faire de savoir, par exemple, la taille r�elle du type HANDLE ou LPVOID ? Tu n'es de toutes fa�ons pas cens� utiliser autre chose que des sizeof pour d�terminer ces tailles, et ne pas mettre des tailles en dur ni faire des casts sauvages genre "void*" vers "int"...

    Pour le reste :
    • Les anciens binaires 32 bits sont de toutes fa�ons d�j� limit�s � 2 Go de taille de donn�es de par leur architecture et/ou d'autres contraintes internes du logiciel.
    • Les logiciels 32 bits un minimum bien faits et/ou 64 bits utilisent GetFileSizeEx() et ses cons�urs estampill�es "Ex", fonctions disponibles depuis plus de DIX ANS.
      Accessoirement, c'est pareil en C/C++, et sous Linux (ftell / ftello).
    • On peut donc l�gitimement se poser la question de savoir si tu n'as pas dormi profond�ment cette derni�re d�cennie pour en �tre rest� � GetFileSize, sans avoir jamais vu la version �tendue...

    Merci de ta tentative de troll, toutefois...

    Oh, � propos du "Je me souviens quand Bill Gates disait encore en 91-92 "mais qui donc a besoin de plus de 1Mb de m�moire ?"" : je te rappelle qu'� l'�poque, les machines � 4 Mo de RAM �taient de vrais monstres de puissance, en g�n�ral vendus comme "stations graphiques / CAO"... Et les personnes ayant r�ellement besoin de plus de 1 Mo de RAM �taient effectivement non seulement rarissimes, mais en plus tr�s riches vu le prix de la barrette 1 Mo � cette �poque-l�...
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au s�rieux, de toutes fa�ons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum ad�quat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  14. #14
    screetch
    Invit�(e)
    Par d�faut
    Microsoft assure quelque chose d'assez inconnu sous Linux, � savoir la compatibilit� binaire ascendante
    niveau troll...

  15. #15
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    D�tails du profil
    Informations personnelles :
    �ge : 51
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par d�faut
    Citation Envoy� par screetch Voir le message
    niveau troll...
    Et pourtant... T'es quasi certain de faire tourner un binaire Linux pour kernel 1.6 sur un Linux kernel 2.6 ? Non, au contraire. Linux assure une compatibilit� tr�s �lev�e au niveau des sources, mais impose souvent une recompilation lors des �volutions majeures.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au s�rieux, de toutes fa�ons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum ad�quat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  16. #16
    Membre �clair�
    Inscrit en
    Avril 2005
    Messages
    1 110
    D�tails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Par d�faut

    Ceci est invalide:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    #if (sizeof(int)!=4)
    ...
    Comment utilise-t-on les sizeof() dans les directives du preprocesseur ?

  17. #17
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    D�tails du profil
    Informations personnelles :
    �ge : 51
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par d�faut
    Citation Envoy� par camboui Voir le message
    Comment utilise-t-on les sizeof() dans les directives du preprocesseur ?
    Narf, autant pour moi, c'est une extension sp�cifique � un de mes compilos, ce truc... J'ai regard� dans le mauvais fichier.

    Par d�faut, faut faire la m�me chose, mais � l'ex�cution, via notamment des assertions du type assert(sizeof(int)==4)...
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au s�rieux, de toutes fa�ons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum ad�quat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  18. #18
    Membre �clair�
    Inscrit en
    Avril 2005
    Messages
    1 110
    D�tails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Par d�faut
    Bah, j'aimerais faire �a avec le preporcessor. C'est tout de m�me assez �l�mentaire.
    Le plus surprenant est ceci:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    #define N sizeof(long)
    #if N == 8
    ...
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    #define N 4
    #if N == 8
    ...
    Le premier code est refus�, le second accept�

  19. #19
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    D�tails du profil
    Informations personnelles :
    �ge : 51
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par d�faut
    Citation Envoy� par camboui Voir le message
    Bah, j'aimerais faire �a avec le preporcessor. C'est tout de m�me assez �l�mentaire.
    J'ai du code qui fait �a (enfin, en partie du moins), mais �a prends deux pages de tests de macros imbriqu�s assez infect � lire sans les extensions acceptant le sizeof...


    Citation Envoy� par camboui Voir le message
    Le plus surprenant est ceci:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    #define N sizeof(long)
    #if N == 8
    ...
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    #define N 4
    #if N == 8
    ...
    Le premier code est refus�, le second accept�
    Ce qui est tout � fait normal, si l'on en croit cette page par exemple : le sizeof est �valu� � la compilation et non pas au pr�process. Or, le #if ne sait tester que des expressions num�riques, et � ce moment-l� ton "N" est une cha�ne de caract�re valant "sizeof(long)".
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au s�rieux, de toutes fa�ons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum ad�quat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  20. #20
    R�dacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par d�faut
    Salut,
    Un petit coup de programmation g�n�rique pourrait t'aider
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    template<bool> struct dummy_politique
    {
       static void do_it();
    };
    template<> struct dummy_politique<true>
    {
       static void do_it();
    };
     
    // ...
    dummy_politique<sizeof(long)==8>::do_it();
    Bien s�r � varier selon les bons plaisirs.

Discussions similaires

  1. Quel est la diff entre windows 32 bits et 64 bits
    Par pierrot10 dans le forum Windows XP
    R�ponses: 4
    Dernier message: 15/08/2006, 15h42
  2. Le wave 32 bits -> wave 8 bits
    Par troumad dans le forum Shell et commandes GNU
    R�ponses: 5
    Dernier message: 03/04/2006, 11h00
  3. Comment convertir une image 24 bits en 8 bits ?
    Par James64 dans le forum Langage
    R�ponses: 22
    Dernier message: 13/12/2004, 20h12
  4. [debutante] Conversion 8 bits en 16 bits
    Par bolo dans le forum Algorithmes et structures de donn�es
    R�ponses: 28
    Dernier message: 06/12/2004, 23h20
  5. Machine 32 bits - cryptage 128 bits
    Par free0pen dans le forum Assembleur
    R�ponses: 6
    Dernier message: 02/04/2004, 20h14

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