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

Printed on: April 16, 2024 at 22:04 o'clock

Member: bloodstix
Solution bloodstix May 29, 2018 at 13:39:05 (UTC)
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
Member: tomaschku
tomaschku May 29, 2018 at 19:00:08 (UTC)
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
Member: bloodstix
bloodstix May 30, 2018 at 12:12:54 (UTC)
Goto Top
Das kann ich dir leider nicht beantworten, da ich NXC nicht wirklich kenne.
Aber die Doku der Sprache sollte das bestimmt hergeben.