.c Datei einbinden



  • hi,
    ich möchte gerne einen zweidimensionalen Array in einer anderen .c Datei initialisieren. Leider bekomme ich folgende Fehlermeldung:
    error: subscripted value is neither array nor pointer

    sobald ich den Array aber vor die Funktion setze, wird alles sauber kompiliert.(Der Array ist übrigens 146 zeilen lang).
    maps.c
    #define laenge 146
    int solidblock[laenge][2]={
    {0, 32},
    //[...]145 zeilen
    }

    und das auslesen erfolgt so:
    main.c
    *int testarray[2]={x,y-16};
    int gefunden=0;
    int i;
    for(i=0; i<laenge && gefunden==0;i++){
    int gleich=1;
    int j;
    for(j=0; j<2 && gleich==1;j++){
    if(testarray[j]!=solidblock[i][j]) gleich=0;
    }
    if(gleich==1){gefunden=1; freeup=1;}else{freeup=0;}
    }
    *
    (soll eine Kollision erkennen)



  • Hast du solidblock auch mit extern in main.c deklariert?

    Wenn nicht, schau mal da (war gerade gestern): http://www.c-plusplus.net/forum/302529

    Für Code gibt es die cpp Tags. Da bleibt die Formatierung erhalten und es wird sogar bunt.



  • ja, zwar in der map.h aber dennoch:
    extern int solidblock[laenge][2];



  • m1n32 schrieb:

    ja, zwar in der map.h aber dennoch:
    extern int solidblock[laenge][2];

    Das soll ja wohl maps.h heißen und nicht map.h?
    Das

    #define laenge 146
    besser
    #define LAENGE 146
    

    muss natürlich auch in diese .h Datei und somit in main.c bekannt sein.



  • ja klar^^

    das habe ich natürlich gemacht, dachte es wäre selbstverständlich.
    weiterhin die Fehlermeldung 😞

    wenn es vielleicht noch wissenswert ist: ich arbeite mit dem PSPSDK


  • Mod

    m1n32 schrieb:

    wenn es vielleicht noch wissenswert ist: ich arbeite mit dem PSPSDK

    Nein, wissenswert wäre konkreter Code. Ein vollständiges Beispiel, bei dem alles bis auf die fehlerverursachende Stelle herausgekürzt wurde. Du hast nun schon zwei Antworten bekommen, bei denen die Helfer sich auch ihre Zeit hatten sparen können, wenn sie nicht raten müssten, wie dein eigentlicher Code wohl aussieht.



  • Dann gib mal mehr preis.

    In welcher Zeile kommt denn der Fehler?
    In welcher Funktion ist das Problem und wie ist diese definiert/deklariert?



  • also, der Array ist dazu da, um solide objekte in meinem Game darzustellen.

    //Zeile 144
    int testarray[2]={x,y-16};
    int gefunden=0;
    int i;
    for(i=0; i<laenge && gefunden==0;i++){
          int gleich=1;
          int j;
          for(j=0; j<2 && gleich==1;j++){
                 if(testarray[j]!=solidblock[i][j]) gleich=0;
          }
          if(gleich==1){gefunden=1; freeup=1;}else{freeup=0;}
    }
    

    damit wird der die position nach obenhin abgefragt (das ganze wird auch nach links, rechts und unten abgefragt).

    die Fehlermeldung:

    NPP_EXEC: "gcc"
    CD: C:\Users\dominik\Documents\PSP Programming\PSP Grafik\3 - Kopie
    Current directory: C:\Users\dominik\Documents\PSP Programming\PSP Grafik\3 - Kopie
    NPP_SAVE: C:\Users\dominik\Documents\PSP Programming\PSP Grafik\3 - Kopie\main.c
    make
    Process started >>>
    psp-gcc -I. -Ic:/pspsdk/psp/sdk/include -O2 -G0 -Wall -D_PSP_FW_VERSION=150 -c -o main.o main.c
    main.c: In function 'main':
    main.c:97: warning: implicit declaration of function 'sceDisplayWaitVblankStart'
    main.c:152: error: subscripted value is neither array nor pointer
    main.c:164: error: subscripted value is neither array nor pointer
    main.c:176: error: subscripted value is neither array nor pointer
    main.c:188: error: subscripted value is neither array nor pointer
    main.c:227: warning: comparison between pointer and integer
    main.c:307: warning: implicit declaration of function 'sprintf'
    main.c:307: warning: incompatible implicit declaration of built-in function 'sprintf'
    main.c:102: warning: unused variable 'wildgrass'
    main.c:64: warning: unused variable 'raster'
    main.c:40: warning: unused variable 'Textbox'
    main.c:38: warning: unused variable 'arrow'
    make: *** [main.o] Error 1
    <<< Process finished.
    ================ READY ================


  • Mod

    Huhu! Bitte ein vollständiges Beispiel! Etwas, was du bei dir am Rechner auf ein paar Zeilen zusammengekürzt hast und welches gerade nur noch den Fehler zeigt, aber sonst funktioniert.
    Das was du uns gerade gezeigt hast ist, was du für den Fehler hältst. Den Fehlermeldungen nach sind bei dir aber eine ganze Menge includes nicht in Ordnung und es gibt noch lauter weitere Fehler, die ganz woanders liegen. Außerdem können wir den Code nicht selber ausprobieren, weil wichtige Definitionen fehlen, z.b. von solidblock.


Anmelden zum Antworten