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 :

Types de base de taille fixe


Sujet :

C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    349
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 349
    Points : 379
    Points
    379
    Par défaut Types de base de taille fixe
    Bonjour,

    Je dois réaliser une application assez gourmande en mémoire. J'aimerais ainsi utiliser à bon escient des type comme short int pour limiter au maximum le gaspillage lorsque je sais qu'une variable ne va jamais dépasser une certaine valeur.

    Le problème c'est que C++ ne définit qu'une valeur minimale pour chaque type, et que le maximum est dépendant du compilateur (par exemple un short int peut utiliser 2 ou 4 octets, ou même plus), donc rien ne garantit que je n'aurai pas de mémoire gaspillée. Quelle serait la meilleure solution pour résoudre mon problème? Créer mes propres types avec des typedef et les adapter selon le compilateur? C'est par exemple ce qu'utilise OpenGL (GLint, GLfloat, etc).

    J'ai une autre question concernant les performances. J'ai lu sur un site que les processeurs travaillaient mieux (plus rapidement) avec des variables de la taille des mots (donc préférer utiliser 4 octets sur un processeur 32 bits, 8 octets sur un processeur 64 bits). Qu'en pensez-vous?

  2. #2
    Membre habitué Avatar de galak63
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 126
    Points : 146
    Points
    146
    Par défaut
    Ton exemple avec les typedef est tout a fait la solution. Ou encore tu peux utiliser des macros pour tes types.

    dans le genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    #ifdef WIN32
    #define REAL float
    #else 
    #define REAL double
    #endif
    Comme çà pour tous tes réels tu utilises REAL et le type sera correct selon la machine où c'est compilé ...
    Le plus dur dans la mort, c'est qu'on loupe l'apéro ...
    www.usirugby.rf.lv

  3. #3
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Chaque compilo définit des types comme int16, ...

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Points : 1 176
    Points
    1 176
    Par défaut
    Citation Envoyé par galak63
    Ton exemple avec les typedef est tout a fait la solution. Ou encore tu peux utiliser des macros pour tes types.
    je pense qu'il vaut mieux juste utiliser les typedef et éviter les macros et les prises de tête qui peuvent en découler

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    349
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 349
    Points : 379
    Points
    379
    Par défaut
    Alors va pour les typedef

    Concernant les performances, quelqu'un a une idée? Même si je pense pas que ça aie une grande influence.

  6. #6
    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
    C99 contient un entête avec des typedefs pour les types de la taille que tu veux exactement.
    Cet entête a été inclus dans C++09.

    Boost fournit sinon une version qui devrait fonctionner sur la plupart des compilateurs.
    Boost ftw

Discussions similaires

  1. Réponses: 15
    Dernier message: 02/03/2012, 17h41
  2. [RegEx] RegExp: recherche type contient dans chaine taille fixe
    Par arc59 dans le forum Langage
    Réponses: 7
    Dernier message: 24/03/2011, 15h09
  3. Réponses: 2
    Dernier message: 22/05/2008, 23h23
  4. la taille des types de base
    Par hansaplast dans le forum C++
    Réponses: 4
    Dernier message: 27/04/2006, 15h59
  5. [CR]Changement de type de base de donnée
    Par nabil dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 12/04/2004, 22h42

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