Funktionspointer

Gast #7097881
Lesenswert?

Hallo,

in einer Windows C Konsolenanwendung soll Objekt das in main bereits 
deklariert wurde einer anderen C Datei zur Verfügung gestellt werden.
1
main.c file:
2

3
objectPort  Port;

Diese Klasse beinhaltet sämtliche Funktionen. Dieses sollen nun in der 
Datei Test.c auch benutzt werden können. Muss ich da einen 
Funktionspointer darauf setzen bzw. wie kann ich auf die Funktionen in 
der Test.c Datei zugreifen?
#7097891
Lesenswert?

in main.h:
1
struct objectPort  {...}; // oder wie auch immer die Deklaration von objPort aussieht
2
extern objectPort  Port;

in test.c
1
#include "main.h"

Aber sehr vermutlich ist dein Problem ein ganz anderes.
Das fängt schon damit an, das C gar keine Klassen mit Funktionen 
kennt...

Oliver
Gast #7097897
Lesenswert?

Wenn du Klassen hast, ist es schonmal kein C. Eventuell ist es C++?

Klasse in die hpp Datei. Funktionen in cpp Dateien Definieren.

Um auf das Objekt, und dessen Methoden zuzugreifen, musst du nur 
schauen, das es irgendwie erreichbar ist. Du kannst es per Argument 
einer Funktion übergeben. Oder du kannst es global in einer C Datei 
anlegen "klasse objektname;", und in einem Header mit "extern klasse 
objektname;" verfügbar machen. Oder du kannst irgendwelche Singelton und 
Factorty Pattern nutzen. Hängt davon ab, wo und wie man es verwenden 
will.
Globale variablen können schnell nachteilig werden, oft gibt es bessere 
Lösungen.
Gast #7097925
Lesenswert?

Alfred schrieb:
> Ja es ist auch kein C++ sondern C.

Was genau meinst du dann mit:
> Diese Klasse beinhaltet sämtliche Funktionen

C hat keine Methoden. Willst du einer Funktion das Objekt übergeben? 
Oder willst du einen Funktionspointer in deiner Struktur ablegen, und 
später aufrufen? Und warum machst du das nicht einfach, was ist dir 
unklar?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren