Strukturtyp-Übergabe

  • geschlossen
  • C

  • TheEye
  • 1157 Aufrufe 3 Antworten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Strukturtyp-Übergabe

    Moin Leute,
    wir lernen grade C in der Schule (:D), und jetzt steh ich vor einem Problem: ich möchte eine Struktur an eine Funktion übergeben, klarerweise als Zeiger.
    Das ganze sieht in etwa so aus:

    playMP3.h:

    Quellcode

    1. void getMP3(const char* filename, TMP3* tags);
    2. #define TITLE_LEN 30
    3. #define ARTIST_LEN 30
    4. #define ALBUM_LEN 30
    5. #define YEAR_LEN 4
    6. #define COMMENT_LEN 30
    7. #define GENRE_LEN 1
    8. struct mp3 {
    9. char title[TITLE_LEN];
    10. char artist[ARTIST_LEN];
    11. char album[ALBUM_LEN];
    12. int year;
    13. char comment[COMMENT_LEN];
    14. int genre;
    15. };
    16. typedef struct mp3 TMP3;
    Alles anzeigen



    playMP3.c:

    C-Quellcode

    1. #include <stdio.h>
    2. #include <stdlib.h>
    3. #include <string.h>
    4. #include "playMP3.h"
    5. void getMP3(const char* filename, TMP3* tags){
    6. /*
    7. int i;
    8. int len;
    9. char* temp;
    10. FILE* fin = fopen(filename, "rb");
    11. if(fin == NULL){
    12. // irgendwas tun
    13. }
    14. len = byteCount(fin);
    15. for(i = 0; i < len && feof(fin) == 0; i++){
    16. if(i > (len - 128) && i < (len-125)){
    17. }
    18. else{
    19. fgetc(fin);
    20. }
    21. }
    22. // return 0;
    23. */
    24. }
    Alles anzeigen


    Der Compiler motzt mit

    Quellcode

    1. In file included from playMP3.c:12:
    2. playMP3.h:15: error: syntax error before "TMP3"
    , Zeile 12 entspricht dem #include für die .h-Datei, Zeile 15 entspricht der Funktionsdeklaration in der .h-Datei.

    Falls jemand den gesamten Code braucht, bitte einfach melden ^^


    Falls jemand den Fehler findet, ich wär euch sehr verbunden.

    Fehler in der Funktion selbst sind atm egal, hab mich damit nur kurz beschäftigt.

    mfg,
    TheEye
    Die Straße gleitet fort und fort
    Weg von der Tür, wo sie begann,
    Zur Ferne hin, zum fremden Ort..
  • Ich glaube es liegt daran, dass du zu viele "Argumente" bei typedef verwendest...
    Normalerweise funktioniert typdef so:

    Quellcode

    1. typedef char letter;
    2. typedef int integer;


    und bei deinem Beispiel müsstest du dich dann entscheiden, also vll so:

    Quellcode

    1. typedef struct mp3;
    2. oder
    3. typedef struct TMP3;


    müsstest dann noch extra:

    Quellcode

    1. mp3 TMP3;


    oder so deklarieren...

    Hab ich nicht getestet ist nur eine Vermutung! Hab auch seit Ewigkeiten kein C++ mehr gemacht... Hab jetzt nur schnell GEGOOGELT ;)


    MFG
  • Auf den ersten Blick würde ich mal
    .... meine erste Idee war Mist.
    Antwort kommt noch ...

    Das war jetzt mal wieder gemein.
    Mach die Zeile:
    void getMP3(const char* filename, TMP3* tags);
    im .h File doch bitte NACH der Typdeklaration!
    Es ist besser zu schweigen und für einen Narren gehalten zu werden, als zu reden und damit alle Zweifel zu beseitigen ...

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von wasawasa ()

  • Danke wasawasa, genau das wars ^^
    War ja klar dass es wieder sowas dämliches ist..

    Kann geschlossen werden, mfg
    TheEye


    Das typedef ist schon in Ordnung so, es handelt sich auch um C und nicht C++ ;)
    Die Straße gleitet fort und fort
    Weg von der Tür, wo sie begann,
    Zur Ferne hin, zum fremden Ort..