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 :

Petite question sur les structures


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Par défaut Petite question sur les structures
    Bonjour à tous...

    J'ai un petit soucis avec mes structures .
    J'essaie de déclarer une structure comme suit dans un fichier .h :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    typedef  short int  tBlock8x8[64];
     
    typedef struct {
      int        Standard;
      int        Stream_Number;
      int        Picture_Number;
      int        Slice_Number;
      int        MB_Number;
      int        MB_Type;
      int        Motion_Type;
      int        MV_Count;
      int        MV_Format;
      tBlock8x8  Coef[6];
    }t420_Macroblock;
    Et dans le fichier C qui va s'en servir je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    t420_Macroblock mb_P2TRANS[45*36];
    Bien sûr j'ai une erreur mais j'ignore pourquoi.

    Mes déclarations sont-elles correctes ?

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2005
    Messages : 119
    Par défaut
    pourquoi le [64] dans typedef short int tBlock8x8[64]; ???

    typedef short int tBlock8x8; plutot .

    [45*36] c'est pour un tableau à 2 dimension?
    fait alors [45][36] .

    Voila si j'ai bien vu, le reste est juste.

  3. #3
    Membre éprouvé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Par défaut
    Le [64] c'est parce que c'est un tableau de 64 shot int que je veux.
    Le tableau de 45*36, c'est un tableau linéaire que je veux, et pour être clair à la lecture du code, je développe (45*36 = 720/16 * 576/16).

  4. #4
    Membre chevronné
    Avatar de Foobar1329
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    283
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Juin 2006
    Messages : 283
    Par défaut
    Hello,

    Citation Envoyé par progfou
    Bonjour à tous...

    J'ai un petit soucis avec mes structures .
    J'essaie de déclarer une structure comme suit dans un fichier .h :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    typedef  short int  tBlock8x8[64];
     
    typedef struct {
      int        Standard;
      int        Stream_Number;
      int        Picture_Number;
      int        Slice_Number;
      int        MB_Number;
      int        MB_Type;
      int        Motion_Type;
      int        MV_Count;
      int        MV_Format;
      tBlock8x8  Coef[6];
    }t420_Macroblock;
    Et dans le fichier C qui va s'en servir je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    t420_Macroblock mb_P2TRANS[45*36];
    Bien sûr j'ai une erreur mais j'ignore pourquoi.

    Mes déclarations sont-elles correctes ?
    Oui, ça m'a l'air tout à fait correct. Si c'est une erreur de compilation peux-tu nous donner plus d'éléments concernant l'erreur eainsi que le code associé STP.

    Si c'est une erreur à l'exécution, pourquoi pas, car ça fait beacoup de données en mémoire automatique (sur la pile quoi).

    Regarde ce que te donne sizeof(t420_Macroblock) .

    Au minimum, ça fait ( 45*36*( 6*64*sizeof(short) + 9 * sizeof(int) ) bytes, sans compter le padding qu'il peut y avoir dans la structure.

    A+

  5. #5
    Membre éprouvé

    Inscrit en
    Juin 2004
    Messages
    1 397
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 1 397
    Par défaut
    Ah ben j'ai trouvé, c'était une erreur dans mon autre structure, dûe à une faute de frappe .
    Erreur trouvée quand j'ai voulu recopier le message .

    Merci quand même .

  6. #6
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par progfou
    Bien sûr j'ai une erreur
    On est censé deviner quelle erreur, parce qu'à vu de nez, ton code a l'air correct... Mais comme on ne sait pas comment il est utilisé... un peu de bon sens...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Petite question sur les conventions de nommage en Java
    Par implosion dans le forum Langage
    Réponses: 7
    Dernier message: 18/01/2006, 15h54
  2. Petites question sur les onglets...
    Par jarod_bx dans le forum Access
    Réponses: 1
    Dernier message: 20/12/2005, 18h45
  3. [ATL] Petite question sur les progress bar
    Par MrMaze dans le forum MFC
    Réponses: 1
    Dernier message: 06/05/2005, 09h40
  4. Réponses: 3
    Dernier message: 08/12/2004, 13h58
  5. Petite question sur les performances de Postgres ...
    Par cb44 dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 13/01/2004, 13h49

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