tomaschku
Goto Top

Funktion aus Datei A aufrufen, die Datei B inkludiert hat

Hallo Leute!

Hinweis: Ich beziehe mich auf die Programmiersprache NotExactlyC, wo es u. a. kein extern gibt.

Problem: Ich habe zwei Dateien main.nxc und xyz.nxc.
main.nxc:
#include "xyz.nxc" 

int error;

//Beispielhaft
void seterror(int i) { error = i; };
int geterror() { return error; };

Jetzt möchte aber xyz.nxc die Error Routine von main.nxc aufrufen. (Nicht die Variable, auch die Funktionen) Von der leicht abgewandelten Programmiersprache mal abgesehen, wie würde
der Lösungsansatz in C aussehen? Dass sozusagen eine lowlevel Datei eine Highlevel Datei anspricht?

Mein Plan wäre, Funktionen aus main.nxc auf xyz.nxc etc. zu verschieben, der übersichtlichkeitshalber. Doch die Error Routine soll nicht doppelt sein, und da ich
den Code leider nicht direkt testen kann, brauche ich möglichst viele Implementierungsansätze.

Gruß,
tomaschku

Content-Key: 375093

Url: https://administrator.de/contentid/375093

Ausgedruckt am: 19.03.2024 um 11:03 Uhr

Mitglied: bloodstix
Lösung bloodstix 29.05.2018 um 15:39:05 Uhr
Goto Top
Hallo,

also ich würde sagen da liegt der Fehler im Design. Eine Datei die inkludet wird sollte nichts aus Dateien aufrufen, die sie vielleicht inkludieren, vielleicht aber auch nicht.

Generell schreibt man solche Fehlerbehandlungsroutinen in low-level Dateien wie z.B. common.nxc, welche dann von allen, die die Routine nutzen wollen/müssen inkludiert wird.
Alles andere ist von hinten durch die Brust ins Knie, meiner Meinung nach.

Grüße
bloody
Mitglied: tomaschku
tomaschku 29.05.2018 um 21:00:08 Uhr
Goto Top
Generell schreibt man solche Fehlerbehandlungsroutinen in low-level Dateien wie z.B. common.nxc, welche dann...
Das ich quasi eine Error.nxc hab, die jede Datei inkludiert? Ist logisch, aber würden globale Variablen (in dem Fall Err_Number) dann auch in jeder Datei gleich sein? Eigentlich schon?

Gruß,
tomaschku
Mitglied: bloodstix
bloodstix 30.05.2018 um 14:12:54 Uhr
Goto Top
Das kann ich dir leider nicht beantworten, da ich NXC nicht wirklich kenne.
Aber die Doku der Sprache sollte das bestimmt hergeben.