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 :

compilation 64 bits sur 32 bits


Sujet :

C++

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2002
    Messages : 162
    Points : 88
    Points
    88
    Par défaut compilation 64 bits sur 32 bits
    Bonjour,

    J'ai un programme assez gros, de mon point de vue (30 000 lignes), qui compile très bien sur ma machine 32 bits. Un autre gars essaie de le compiler sur sa machine 64 bits et il a une erreur à chaque fois que j'ai mis un "unsigned int" à la place d'un "size_t".

    J'aimerai bien corriger le problème mais je ne me vois pas chercher tous les problèmes dans tout mon code. Est-ce qu'il est possible de dire à gcc de m'afficher un message lorsque je mets un "unsigned int" à la place d'un "size_t" ?

    J'ai essayé d'émuler un processeur 64 bits sur ma machine, avec qemu, mais ça ne semble pas marcher (l'installation d'ubuntu sur la machine virtuelle s'arrête).

    Est-ce que vous auriez une solution pour me sortir de là ?

    Merci

  2. #2
    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
    Points : 4 625
    Points
    4 625
    Par défaut
    rechercher/remplacer ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2002
    Messages : 162
    Points : 88
    Points
    88
    Par défaut
    Citation Envoyé par loufoque Voir le message
    rechercher/remplacer ?
    bof bof, il y a des "unsigned int" que je veux garder et je ne veux pas vérifier chaque occurrence trouvée sur des milliers de lignes.

    De plus je pense qu'une fois ce problème corrigé, d'autres apparaîtront ; c'est pour ça que j'aimerai un moyen de compiler en 64 bits

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Visual 2005 est capable de faire ça: option /Wp64 (active par défaut sur ma version pro).

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Points : 1 053
    Points
    1 053
    Par défaut
    Normalement gcc a une option de détection automatique des incompatibilités possibles avec le 64 bits activée par défaut. Soit vous avez une version trop ancienne, soit vous l'avez désactivée, soit c'est un type de problème qu'il ne peut pas détecter (les plus gros problème de comp. étant les castings en pointeurs en int, ça se limite peut-être à ça).
    Tu es sur que ce sont des erreurs et pas des warnings? Ca me semble étrange quand même.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    162
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2002
    Messages : 162
    Points : 88
    Points
    88
    Par défaut
    Bonjour,

    La version de gcc est 4.1.3. Et en effet, ce sont des avertissements et non pas des erreurs.

    par exemple : "attention : comparaison est toujours fausse en raison d'une gamme limitée de type de données"

    Le warning apparaît sur un test comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    unsigned int p;
    ...
    if (p == std::string::npos)
    ...
    C'est embêtant parce qu'il y a quand même un traitement à faire dans le 'if'

  7. #7
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    C'est pasce que npos est plus grand qu'un unsigned int.
    C'est un string::size_type.

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Points : 1 053
    Points
    1 053
    Par défaut
    static const size_t npos = -1;
    Maximum value for size_t
    npos is a static member constant value with the greatest possible value for an element of type size_t.
    Heu, juste un truc comme ça, ça t'arrive souvent d'avoir un seul string qui à lui seul occupe toute la mémoire adressable? Parcequ'au sinon je comprends pas très bien l'utilité de ton test.

  9. #9
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    find() retourne npos quand le(s) caractère(s) cherché(s) n'a(n'ont) pas été trouvé(s).

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/01/2014, 20h19
  2. Réponses: 0
    Dernier message: 31/03/2011, 13h37
  3. Addition d'entier signé sur 64 bits sur un proc 32 bits
    Par SoJaS dans le forum x86 32-bits / 64-bits
    Réponses: 3
    Dernier message: 10/08/2010, 07h22
  4. compilation 32 bits sur machine 64 bits
    Par meufeu dans le forum C++
    Réponses: 2
    Dernier message: 27/08/2009, 20h36

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