kostenloser Webspace werbefrei: lima-city


Multiple Definitionen eines Pointers

lima-cityForumProgrammiersprachenC/C++ und D

  1. Autor dieses Themas

    schrotti12

    Moderator Kostenloser Webspace von schrotti12

    schrotti12 hat kostenlosen Webspace.

    Hallo...

    Ich will gerade eine Stack-Datenstruktur programmieren.
    Dazu brauche ich eine globale Pointer-Variable auf das erste Element des Stacks.
    Diese Variable habe ich in der header-Datei "stack.h" deklariert.

    Das ganze sieht so aus:

    StackEntry* pStack = NULL;

    In der zugehörigen cpp-Datei sind die ganzen Methoden (push, pop, ...) drinnen.

    Wenn ich jetzt aber von main() aus versuche, über pop einen Stack aufzubauen, kommt beim kompilieren der Fehler "multiple definitions of pStack".
    Kann mir jemand erklären warum?! Ich habe den Pointer auf das erste Element doch nur einmal global gesetzt.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. hmm wäre es nicht einfacher das ganze über Inline-Assembler in C ( also über asm { /*... code ...*/ } ) zu implementieren und auch schneller da systemnaher o0? Du hättest dann über ESP und EBP genug möglichkeiten den Stack anzuspringen ^^. Soll jetzt keine Kritik sein möchte nur wissen was du realisieren willst :wink:

    Beitrag zuletzt geändert: 12.4.2009 1:15:34 von kelvar
  4. Kannst du bitte den kompletten Code posten? Mit der einen Zeile lässt sich kein Fehler erkennen.

    @kevlar: Der Prozessorstack mag zwar eine nette Sache sein, aber das Problem ist, dass der Stack schon für andere Sachen benutzt wird und da dann von allen Seiten fröhlich gepusht und gepopt wird. Wenn jetzt eine andere Funktion irgendwas auf den Stack pusht, dann kannst du den "Benutzer-Stack" nicht erweitern, weil etwas anderes schon auf ihm "drauf" liegt.
  5. c****s

    Hast du vielleicht die Headerdatei in mehreren C-Dateien mit #include eingebunden. Danach hört sich das nämlich an. Versuch's mal mit

    #pragma once


    oder mit

    #ifndef __IRGENDWAS_WIRRES__
    #define __IRGENDWAS_WIRRES__
    
    //hier der Inhalt des Headers
    
    #endif
  6. b*********r

    ... oder extern
    Und dann in Main() pStack=NULL;

    Oder einfacher
    #define pStack(i) __asm mov [ i ],ebp;
    Dann ist:
    int* Stackpointer;
    pStack(Stackpointer);

    Beitrag zuletzt geändert: 6.6.2009 0:14:49 von blitzmerker
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!