[test2.ddp]
Die öffentliche Zahk z ist 23.
Die öffentliche Zahl test ist 0.
[test.ddp]
Binde "test1" ein.
Binde test aus "test2" ein.
Binde "Duden/Ausgabe" ein.
Schreibe z auf eine Zeile.
$ kddp kompiliere test.ddp
error: Linking globals named 'z': symbol multiply defined!
Der Fehler entsteht dadurch, dass alle öffentlichen Symbole (Funktionen und Variablen) den LLVM Linkage Typ external haben, und dadurch in der Symbol-Table der generierten objekt Datei als globale Symbole sichtbar sind.
Für Funktionen ist das nur nötig, wenn es externe Funktionen sind, die einer C-Definition entsprechen müssen.
Die Lösungen für das Problem wäre es name-mangling zu betreiben, und jedem (öffentlichen) Symbol ein Module-Spezifisches Prefix/Suffix anzuhängen.
Für externe Funktionen würde das nicht gelten. Noch gibt es in DDP keine "externen" Variablen, falls wir das einführen wäre das dort ebenfalls nicht der Fall.
Der Fehler entsteht dadurch, dass alle öffentlichen Symbole (Funktionen und Variablen) den LLVM Linkage Typ external haben, und dadurch in der Symbol-Table der generierten objekt Datei als globale Symbole sichtbar sind.
Für Funktionen ist das nur nötig, wenn es externe Funktionen sind, die einer C-Definition entsprechen müssen.
Die Lösungen für das Problem wäre es name-mangling zu betreiben, und jedem (öffentlichen) Symbol ein Module-Spezifisches Prefix/Suffix anzuhängen. Für externe Funktionen würde das nicht gelten. Noch gibt es in DDP keine "externen" Variablen, falls wir das einführen wäre das dort ebenfalls nicht der Fall.