Fehler "ungültige Typen »const uint32_t[unsigned int]« für Feldindex" für src-Parameter bei memcpy



  • Hallo,

    ich bekomme den Fehler "ungültige Typen »const uint32_t[unsigned int]« für Feldindex" in folgendem Code nicht weg :

    #include <string.h>
    
    #define ARRAY_SIZE 256 //Array-Size in Blöcken
    #define BLOCK_SIZE 512 //Block-Größe in Byte
    static byte media[ARRAY_SIZE*BLOCK_SIZE];
    
    static bool rd_blk(const uint blk_num,byte* const buffer)
    {
      if ( blk_num < ARRAY_SIZE )
       {
         memcpy(
                buffer,
                &media[blk_num*BLOCK_SIZE],  // hier kommt der Fehler
                BLOCK_SIZE);
         return(true);
       }
      return(false);
    }
    

    Kann mir bitte jemand sagen was ich falsch mache.
    Ich steh da momentan echt auf dem Schlauch.
    Selbst ein '(void*)' vor das '&' oder das ersetzen der kleinen Multiplikation in der eckigen Klammern gegen 0 helfen nicht.

    ich benutze KDevelop 3.4.1 mit nem aktuellem GCC unter openSUSE 10.3

    Grüße und Danke schon mal!
    Erik



  • Seltsam.

    Wo/wie ist denn byte und uint definiert?



  • > Seltsam.

    Oh ja, ich bekomme das einfach nicht weg. Hab mir schon überlegt das einfach durch eine Schleife zu ersetzen und eben händisch zu kopieren.

    > Wo/wie ist denn byte und uint definiert?
    Sorry hatte ich vergessen.

    in einer extra Header-Datei :

    #include <inttypes.h>
    
    typedef  uint32_t  uint;
    typedef  uint8_t   byte;
    

    Grüße
    Erik



  • Mit diesem Codefragment kann ich den Fehler nicht reproduzieren. Vielleicht irgendein amoklaufendes #define.

    Zeig mal ein kompilierbares Minimalbeispiel, das den Fehler reproduziert.



  • und wenn du das const weglässt?



  • 😃



  • Hallo,

    alles zurück!
    Sorry war mein Fehler.
    In der echten Funktion 'rd_blk' gibt es noch ein Parameter, vom type uint, das auch 'media' heißt und das hat innerhalb der Funktion natürlich Vorrang vor dem statischen Array. Das hab ich gerade gefunden weil ich den Code von meinem ersten Posting in eine kleine Datei kopiert hatte und sich diese ganz einfach kompilieren ließ. Ein diff hat mir dann die Augen geöffnet. 😮

    Entschuldigt bitte das ich euch mit meiner Schussligkeit belästigt hab.

    Grüße und trotzdem Danke für Eure Antworten
    Erik


Anmelden zum Antworten