Forum: Analoge Elektronik und Schaltungstechnik C-Code in neuer Datei auslagern


von Wipes (Gast)


Lesenswert?

Hi Forum,

ich bin irgendwie zu blöd zum googeln. Ich spiele gerade etwas mit einem 
ATtiny und habe dafür einen Blink-Code. Der funktioniert auch. Ich 
wollte jetzt eine neue .c Datei erstellen und dort etwas Code auslagern. 
Ist aber (wer hätte es gedacht) nicht wie beim Arduino, dass ich einfach 
einen neuen Tab mache und gut. Er sagt mir, wenn ich den Code hochlade :

undefined reference to `"name der Funktion"

Außerdem sagt er in der neuen Datei auch noch der Bezeichner .... ist 
nicht definiert, die ich im Haupttab definiert habe.
Ich benutze Visual studio Code.

Kann mir da jemand weiter helfen oder auf Beschreibung verweisen ?
Danke
Mfg

von M.K. B. (mkbit)


Lesenswert?

Ich glaube die Datei wird einfach beim Kompilieren oder Linken nicht 
berücksichtigt.

Normalerweise muss man die irgendwo hinzufügen. Im Detail hängt das von 
deinem Builprozess ab (Make, Cmake, Projektdateien, ...)

von Gerald K. (geku)


Lesenswert?


von Dirk B. (dirkb2)


Lesenswert?

Gerald K. schrieb:
> Vielleicht hilft dieser Link
> …
> weiter

Da geht es um Visual Studio, nicht um Visual Studio Code.

von Karsten (Gast)


Lesenswert?

Guten Morgen,

ganz blöd gefragt:
Header-Dateien (xxx.h) sind dir ein Begriff, du hast die entsprechenden 
Funktionen in deiner Headerdatei aufgeführt und diese auch korrekt in 
deiner Haupt-c-Datei eingebunden?

Das könnte z.B. so aussehen:

extern.c:
1
void MachWasIchDirSage(void)   //Komplette Implementierung der Funktion
2
{
3
//Code
4
}

extern.h:
1
void MachWasIchDirSage(void);  //Hier nur die Funktionssignatur

main.c:
1
#include extern.h              //Einbinden der Headerdatei
2
3
void main()
4
{
5
  MachWasIchDirSage();         //Funktionsaufruf
6
}

Das ist natürlich stark verkürzt, sollte dir aber genug Hinweise geben, 
den Rest bei Google zu finden oder nochmal konkret nachzufragen.

Falls du das alles schon wusstest: Auch gut :)

Viele Grüße

Karsten

von abc (Gast)


Lesenswert?

> nicht wie beim Arduino

Das macht eben nicht schlau sondern dumm.

von Gerald K. (geku)


Lesenswert?

Die neuen Entwicklungsumgebungen nehmen den Benutzer ab sich um den 
Build-Prozess zu kümmern. Damit bekommt dieser keine Ahnung was sich bei 
diesem Prozess abspielt. Früher mußte man sich mit Makefiles 
herumschlagen. Es wäre sicher sehr lehrreich am Beginn mit selbst 
erstellte Makefile zu arbeiten, bevor man komfortable 
Entwicklungsumgebungen benutzt.

von HildeK (Gast)


Lesenswert?

Gerald K. schrieb:
> Die neuen Entwicklungsumgebungen nehmen den Benutzer ab sich um den
> Build-Prozess zu kümmern.
Nicht nur die neuen, das gibt es schon lange! Und wenn es das schon 
gibt, warum nicht nutzen?

> Damit bekommt dieser keine Ahnung was sich bei
> diesem Prozess abspielt. Früher mußte man sich mit Makefiles
> herumschlagen. Es wäre sicher sehr lehrreich am Beginn mit selbst
> erstellte Makefile zu arbeiten, bevor man komfortable
> Entwicklungsumgebungen benutzt.
Das ist für mich die selbe Diskussion wie zwischen ASM und Hochsprache.
Es ist interessant und auch nicht falsch, da eine groben Überblick zu 
haben und den Makefile ggf. interpretieren zu können - wie ein 
Assemblerlisting auch. Aber das zwingend zu beherrschen, ist imho nicht 
notwendig.

Ich habe noch nie einen Makefile selber erstellt. Das macht z.B. mein 
AVR-Studio. Ich muss nur lernen, wie ich das bediene und wie ich da 
externe C-Files einbinde - ein Klacks.
Nicht anders, wenn ich  mit Eclipse arbeite.

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.