Partage
  • Partager sur Facebook
  • Partager sur Twitter

Structures

extern const struct, quelle est l'erreur?

    1 mars 2006 à 11:25:22

    Bonjour,

    dans un fichier (pas le mien) il est ecrit
    struct AVOption;
    #ifdef HAVE_MMX
    extern const struct AVOption avoptions_common[3 + 5];
    #else
    extern const struct AVOption avoptions_common[3];
    #endif


    et dans la "make" ( make (sous linux, en root)) ca dit

    Citation : terminal

    make -C libavcodec all
    make[1]: Entering directory `/home/fransman/Desktop/ffmpeg-0.4.9-pre1/libavcodec'
    gcc -O3 -g -Wall -DHAVE_AV_CONFIG_H -I.. -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE -c -o common.o common.c
    In file included from avcodec.h:14,
    from common.c:28:
    common.h:67: error: array type has incomplete element type
    common.h:71: error: array type has incomplete element type
    make[1]: *** [common.o] Error 1
    make[1]: Leaving directory `/home/fransman/Desktop/ffmpeg-0.4.9-pre1/libavcodec'
    make: *** [lib] Error 2



    bref, quel est le probleme? je pense que c'est parce que c'est seulement ecrit struct AVOption; dans le header mais je suis pas sur...

    merci
    • Partager sur Facebook
    • Partager sur Twitter
      1 mars 2006 à 12:00:22

      Peut-être parce que ta structure est utilisée avec extern mais n'est pas définie...
      • Partager sur Facebook
      • Partager sur Twitter
        1 mars 2006 à 12:17:06

        Citation : mleg

        Peut-être parce que ta structure est utilisée avec extern mais n'est pas définie...


        Normalement ce problème ne provoque pas une ereure du linker?
        • Partager sur Facebook
        • Partager sur Twitter
          1 mars 2006 à 12:23:16

          Faudrait tester mais sans doute. Sinon dans le header si y a pas extern const struct ni de typedef ben y a pas à chercher plus loin :-°

          A mon avis ça doit être ça parce que y a " array type has incomplete element type ". Array ça concerne les tableaux en C++.
          • Partager sur Facebook
          • Partager sur Twitter
            1 mars 2006 à 12:38:48

            dooonc... qu'est ce que je doit faire?

            aussi:

            static const uint16_t ac3_freqs[3] = { 48000, 44100, 32000 };

            Citation : Terminal

            ac3tab.h:7: error: static declaration of ‘ac3_freqs’ follows non-static declaration



            qu'est ce que je doit faire ici?
            • Partager sur Facebook
            • Partager sur Twitter
              1 mars 2006 à 13:14:38

              Ben dans le header tu ajoute extern.

              A ta place je ferai aussi un typedef :

              typedef extern const struct AVOption  AVOption


              Ou quelquechose dans le genre.
              • Partager sur Facebook
              • Partager sur Twitter
                1 mars 2006 à 13:22:22

                bref j'ai fait un pti bricolage et ca marche pour le premier probleme, comment faire pour le deuxieme? celui avec le static
                • Partager sur Facebook
                • Partager sur Twitter
                  1 mars 2006 à 13:38:39

                  Montre le code parce que là on peut pas faire grand chose.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    1 mars 2006 à 13:45:24

                    il y a seulement cette ligne pour le deuxieme probleme vu que c'est qu'une declaration de variable, mais c'est pas grave je vais aller sur le site et dire que ca ne marche pas, merci quand meme
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Structures

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown