Anzeige:
Ergebnis 1 bis 5 von 5

Thema: mehrdimensionales array extern verwenden?

  1. #1
    Registrierter Benutzer
    Registriert seit
    13.02.2006
    Beiträge
    47

    mehrdimensionales array extern verwenden?

    Ich möchte einen 2-dimensionalen array extern verwenden.
    Ich hatte vor, das so zu machen:
    Code:
    ...
    extern char word_dsp_buf[4][14];
    ...
    void
    glsdreh_init()
    {
        int i;
        ...
    
        for (i=0; i<4; i++)
            word_dsp_buf[i][0] = '\0';
        ...
    }
    ...
    void
    center_puzzle(const char *s, int line, int n)
    {
        ...
        strncpy(&word_dsp_buf[line][0], s, n);
        ...
    }
    Aber da bekomm ich immer eine Fehlermeldung:
    ...undefined reference to 'word_dsp_buf'...
    für glsdreh_init und center_puzzle.

    Wenn ich dagegen den array lokal in der funktion definiere geht's.
    Code:
    void
    center_puzzle(const char *s, int line, int n)
    {
        int i;
        char word_dsp_buf[4][14];
    
        for (i=0; i<4; i++)
            word_dsp_buf[i][0] = '\0';
    
        strncpy(&word_dsp_buf[line][0], s, n);
        ...
    }
    Aber was in den array kopiert wird, muss die ganze Laufzeit über gespeichert
    bleiben und ich brauch den array auch für eine andere Datei.
    Wie mach ich das?

  2. #2
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Wie sieht im ersten Fall die Stelle aus, an der du das Array definierst?
    D.h. die Stelle wo das Array nicht extern markiert ist.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  3. #3
    Registrierter Benutzer
    Registriert seit
    13.02.2006
    Beiträge
    47
    Da gibts keine andere Stelle, außer in einer header Datei.
    Der array ist dort auch mit extern makiert.
    extern char word_dsp_buf[4][14];

  4. #4
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Wenn es das Array nirgends wirklich gibt, wo soll der Linker es deiner Meinung nach finden?

    Du brauchst genau ein Vorkommnis, das dem Kompiler anweist, wirklich Speicher für das Array zu reservieren.

    Du kannst zwar in C++ wie in einer Behörde auf einen anderen Zuständingen verweisen, nur im Gegensatz zu einer Behörde, muß es diesen Zuständigen auch geben

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  5. #5
    Registrierter Benutzer
    Registriert seit
    13.02.2006
    Beiträge
    47
    Du kannst zwar in C++ wie in einer Behörde auf einen anderen Zuständingen verweisen, nur im Gegensatz zu einer Behörde, muß es diesen Zuständigen auch geben
    Wenn das mal nicht plastisch ist!

    Hab mir K&R2 noch mal zu Gemüte geführt. Und da steht tatsächlich, das muss ich wohl irgendwann mal überlesen haben , ein Absatz der beginnt so:
    Man muss genau die Deklaration einer externen Variablen von ihrer Definition unterscheiden. ...
    Dank deiner schönen Antwort, muss der Hund also genau dort begraben liegen!

    Ich denke, ich krieg das jetzt schon hin.

    Danke!

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •