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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.