Zweidimensionales Array an Funktion übergeben



  • Wenns external ist, brauchts dock keine Parameterübergabe mehr.
    Verwende ich bei großen Arrays auch öfter, um in meiner Software
    Speicher zu sparen und Parametergedöns zu vermeiden - ist aber
    auch Geschmacks- und Ansichtssache



  • also brauche ich im Hauptprogramm nur

    ausgabe();
    

    aufrufen und in der Funktion dann nur

    extern bool array;
    void ausgabe()
    {
    .
    .
    }
    

    Wäre das so richtig? Oder ist die Syntax falsch?



  • ist dann zwar richtig, aber hochgradig gefährlich, weil überhaupt nicht wiederverwendbarer code.



  • DocJunioR schrieb:

    naben der Tatsache, dass ich extern nicht nutzen würde ist ein zweidimensionales Array ein Array von Arrays, oder ein Zeiger auf eine Liste von Zeigern auf Zeiger, welche auf eine Element-Liste zeigen...

    Ohoh! Wenn das der camper sieht!



  • Hallo,
    ich bin einer der "Mitentwickler" von resis.
    Das Problem, dass wir haben ist eigentlich ganz banal. Wir wollen ein zweidimensionales Array global deklarieren, um es so auch in anderen cpp-Dateien zu verwenden. Uns fehlt bloß die Syntax um das Array korrekt zu deklarieren. Wisst ihr wie das geht?
    Schonmal danke für die Hilfe!



  • warum wollt ihr es global deklarieren? ihr könnt es doch per funktionsparameter aus dem Hauptprogramm übergeben.
    aber ansonsten per extern, dann ist es global in der jeweiligen. cpp und sollte überall aufrufbar sein.
    Instanziierungen, bzw. Definitionen sind in headern imo nicht möglich.



  • Es ginge auch per Übergabe aber wir wollen es global machen.
    Kannst du uns bitte die Syntax schreiben, wie es man es korrekt deklariert.
    Wir haben bis jetzt im Hauptprogramm global deklariert:

    bool array [5] [6];
    

    Und in der anderen .cpp ebenfalls global:

    extern bool array;
    

    Das funzt nich... Compiler schmeißt einen Fehler.



  • DocJunioR schrieb:

    ist dann zwar richtig, aber hochgradig gefährlich, weil überhaupt nicht wiederverwendbarer code.

    Das stimmt nicht.

    DocJunioR schrieb:

    ...dann ist es global in der jeweiligen. cpp und sollte überall aufrufbar sein.

    In C haben die Dateien die Endung *.c

    DocJunioR schrieb:

    Instanziierungen, bzw. Definitionen sind in headern imo nicht möglich.

    Das ist falsch.

    @el-niki & resis

    // xyz1.c
    int array[3][4];

    // xyz2.c
    extern int array[3][4];



  • lass dich bloß nich dazu hinreißen, deine aussagen mal zu begründen..
    ja, in c heißt des .c, nich .cpp ist aber die gleiche mimik.
    btw: aufgrund der endung wirds auch kein besserer stil.



  • lölöjlöölöl schrieb:

    @el-niki & resis

    // xyz1.c
    int array[3][4];

    // xyz2.c
    extern int array[3][4];

    Das funzt leider nicht. Ham wir auch schon probiert.
    Wir benutzen c++, macht das vielleicht einen Unterschied?



  • da muss schon eine von beiden die andere inkludieren..



  • el-niki schrieb:

    Wir benutzen c++, macht das vielleicht einen Unterschied?

    Ja, C++ kann das nicht.


  • Mod

    el-niki schrieb:

    lölöjlöölöl schrieb:

    @el-niki & resis

    // xyz1.c
    int array[3][4];

    // xyz2.c
    extern int array[3][4];

    Das funzt leider nicht. Ham wir auch schon probiert.
    Wir benutzen c++, macht das vielleicht einen Unterschied?

    "funzt nicht" ist keine Fehlerbeschreibung - der schlampige Umgang mit Typspezifikationen lässt auch spezifische Vermutungen hinsichtlich des Fehlers nicht zu:

    bool array [5] [6];
    

    und

    extern bool array;
    

    sind natürlich nicht kompatibel.



  • Und wie macht man das? Kannst du mir bitte die Syntax dazu schicken?



  • extern bool array[][];

    würdsch mal so tippen.. befasse mich aber unoft mit sowas..



  • OK, ich halte fest: Wir können globale zweidimensionale Arrays nicht in anderen cpp-Dateien verwenden, es sei denn wir benutzen Zeiger, richtig?
    Falls es doch möglich ist, bitte ich um die korrekte Syntax.



  • DocJunioR schrieb:

    extern bool array[][];

    würdsch mal so tippen.. befasse mich aber unoft mit sowas..

    Das funktioniert leider nicht. Fehlermeldung: Feldindex fehlt.



  • ich sag ja, ich mach das nie.. habs in den letzten 10 Jahren nicht gebraucht..



  • el-niki schrieb:

    Und wie macht man das? Kannst du mir bitte die Syntax dazu schicken?

    el-niki schrieb:

    OK, ich halte fest: Wir können globale zweidimensionale Arrays nicht in anderen cpp-Dateien verwenden, es sei denn wir benutzen Zeiger, richtig?
    Falls es doch möglich ist, bitte ich um die korrekte Syntax.

    so ist korrekt:
    // xyz1.c
    int array[3][4];

    // xyz2.c
    extern int array[3][4];



  • Wie gesagt, ham wir auch schon probiert. Funktioniert ebenfalls nicht.
    Fehlermeldung: fatal error LNK1120: 10 nicht aufgelöste externe Verweise


Anmelden zum Antworten