Servus!

Ich komm mal wieder nicht weiter. Bisher dachte ich, dass es sich mit globalen Variablen so verhält:

globalcounter.h
Code:
struct globalcounter... (Definition des struct im header file)
globalcounter.c
Code:
struct globalcounter *gc = malloc(size_of(struct gc));
gc->blubb=1;
printf("blubb=%d\n", gc->blubb);
main.c
Code:
#include "globalcounter.h"
printf("blubb=%d\n", gc->blubb);
Hab' den Code gerade aus'm Kopf eingetippt, also Syntaxfehler könnt ihr ignorieren. Entscheidend ist, ob ich in main.c auf gc zugreifen kann. Ich kann's nämlich nicht. Ich hab' mir sogar die Speicheradresse von gc ausgeben lassen (in main.c und in globalcounter.c) und die ist in beiden gleich. Trotzdem gibt mir das printf in main.c "0" aus, das printf in globalcounter.c jedoch "1". Und es sollte natürlich in beiden Fällen "1" sein. Was mach ich falsch? Muss ich "extern" verwenden? Naja, ich hab's natürlich auch schon mit "extern" probiert(in main.c, anstatt des #include "globalcounter.h"), aber das hat nix geändert. Im konkreten Fall ist die Welt natürlich noch ein bisschen komplizierter (im struct gc sind weitere pointer), aber prinzipiell sollte das schon so passen.
Vom timing her gibt's kein Problem - das printf in main.c wird erst nach dem printf in globalcounter.c aufgerufen. Es läuft auch alles im gleichen Thread (nämlich im Haupt-Thread; mein Programm startet zwar ein paar weitere Threads, aber davon ist weder main.c noch globalcounter.c betroffen).