Forum: Mikrocontroller und Digitale Elektronik C extern deklarieren aber wo


von Aubacke (Gast)


Lesenswert?

Hallo Leute,

eine Frage: Ich mache gerade ein Projekt mit anderen Entwicklern einer 
anderen Firma. Jetzt soll mein Modul als Objektcode übergeben werden um 
es einzubinden (kein C Code).

Mein Modul soll Variablen anderer Module verarbeiten, sodass ich mir nun 
die Frage stelle, ob man:

a) die Headerdateien der anderen Module, in denen die Variablen 
vorkommen bei mir einbindet (diese müssen dann natürlich extern 
deklariert sein), oder

b) ich die Variablen in meiner Headerdatei als extern deklariere und sie 
damit einfach annehme ?

Was ist besser ? Was würdet ihr tun ? Wo können Probleme auftreten 
(ausser dass alles eindeutig definiert sein muss) ?

Vielen Dank und Grüße

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Variante a.

Variante b ist Pfusch.

Wer ein Interface zur Verfügung stellt (und dazu gehört hier auch die 
globale Variable), ist nicht nur für die Definition, sondern auch für 
die Deklaration verantwortlich.

von MaWin (Gast)


Lesenswert?

Man definiert ein Interface, ein API, und liefert den C-Programmierer 
dafür eiene C-Headerdatei in der deine Funktionen mit ihren übergebenen 
Datentypen deklariert sind.

In welcher Form das API ist, ob native C-Funktionen mit übergebenen 
C-Strukturen, ob C++-Klassen, ob COM Objekte, stimmt man mit den Leuten 
ab.

Werte werden also übergeben, bei vielen Werten wird ein Verweis auf die 
Struktur übergeben oder eine Struktur zum einfüllen zur Verfügung 
gestellt.

Bei OBJ muss man auch darauf achten, welche LIBraries die ihrreseits 
wieder sehen wollen, es ärgert, wenn das eine eingebundene OBJekt 
plötzlich massenhaft LIBraries benötigt, die das Hauptprogramm gar nicht 
braucht, womöglich noch eine eigene Speicherverwaltung, GUI-API oder 
managed code.

von Volker Z. (vza)


Lesenswert?

Dies ist eine Frage der Veranatwortlichkeiten.

Stell dir selbst die Frage (bei beiden Varianten) wer Vereantwortlich 
ist, und wer dann die Änderungen machen muss, wenn es nicht 
funktioniert.

ciao

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.