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
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, ...)
Vielleicht hilft dieser Link https://docs.microsoft.com/de-de/cpp/windows/walkthrough-creating-a-standard-cpp-program-cpp?view=msvc-16 weiter
Gerald K. schrieb: > Vielleicht hilft dieser Link > … > weiter Da geht es um Visual Studio, nicht um Visual Studio Code.
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
> nicht wie beim Arduino
Das macht eben nicht schlau sondern dumm.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.