http://www.mikrocontroller.net/articles/Funktionen_auslagern_(C) Hallo Ich bekomme das nicht hin. Hat jemand vielleicht jemand ein kleines fertiges Projekt das er anhängen könnte. Ich bin Delphiander und das Konzept von "C" tut mir weh.
Welchen Teil, konkret, kriegst du nicht hin? Das Grund-Prinzip ist eigentlich ganz einfach: jedes C-File wird für sich alleine compiliert. Was in anderen C-Files steht interessiert den Compiler dabei nicht. Es gilt nur dieses eine C-File, das gerade compiliert wird - dieses muss daher in sich vollständig sein. C kennt in seiner Urform keinen 'Projektgedanken'. Das du trotzdem mit Projekten hantieren kannst, verdankst du deiner IDE (dem Editor). Das ist aber dem Compiler ziemlich wurscht. Der schnappt sich einfach nur wie befohlen ein C-File und compiliert es. Die auf die Art entstandenen compilierten Einzelteile, werden vom Linker zum kompletten Programm zusammengesetzt. Daraus folgt alles andere.
:
Bearbeitet durch User
Meinst du mit C-Files auslagern sowas: main.c
1 | #include "timer.h" |
2 | |
3 | void main(void) |
4 | { |
5 | timer_init(); |
6 | |
7 | } |
timer.h
1 | void timer_init (void); |
timer.c
1 | #include "timer.h" |
2 | |
3 | void timer_init (void) |
4 | { |
5 | // init |
6 | } |
Also ich versuche *Signal *Conditioning & *Measurement *ADC PIC18 A/D Converter Demonstration for the 18CXXX 04/01/2003 das für xc8 umzuschreiben. Habe eben den C Compiler für 18 Pics installiert und siehe da keine Probleme beim Kompilierenen. also die Funktionen stimmen. Jetzt wieder beim XC8 habe ich das Problem das das Headerfile nicht erkannt wird. *openxlcd.c:1: error: can't open include file "xlcd.h": No such file or *directory habe auf groß/klein Schreibung geachtet. Mache schon 2 Tage an dem "Schimpfwort" Projekt rum. Was Lustig war habe nur einen funktionierenden Teil kompiliert und der Debugger debuggt irgendwas im Nirwana und das macht er aber richtig. Ich habe alle Files im gleichen Verzeichnis. Gehe jetzt erst mal Wein trinken mit Freunden. Danke für eure Hilfe
Martin Michael schrieb: > Jetzt wieder beim XC8 habe ich das Problem das das Headerfile nicht > erkannt wird. > *openxlcd.c:1: error: can't open include file "xlcd.h": No such file or > *directory Na ja. Das ist aber jetzt wieder was ganz anderes. Wenn es dieses Header File nicht gibt, dann gibt es das auch nicht. Wie ist die Schreibweise im Code? Es macht einen Unterschied, ob man
1 | #include <xlcd.h> |
schreibt, oder ob man
1 | #include "xlcd.h" |
schreibt. Ersteres ist ein Include von den vordefinierten Systemdirectories. Letzters ein Include vom Projektpfad. Wobei man die Systemdirectories in einer normalen IDE auch in irgend einem Dialog konfigurieren kann. > habe auf groß/klein Schreibung geachtet. > Mache schon 2 Tage an dem "Schimpfwort" Projekt rum. Schau halt mal auf dem System nach, ob du ein derartiges Header File hast. Vielleicht ist es ja auch wirklich nicht auf dem Projektverzeichnis, sondern auf einem Subverzeichnis davon.
Martin Michael schrieb: > Jetzt wieder beim XC8 habe ich das Problem das das Headerfile nicht > erkannt wird. > *openxlcd.c:1: error: can't open include file "xlcd.h": No such file or > *directory Na das läßt sich MPLABX beliebig leicht vermeiden: #include " tippen und die Datei auswählen. Geht ebenso mit #include < MfG Klaus
XLCD ist einer Lib. MIT #include <xc.h> #include <plib.h> werden auch die entsprechenden Headerdateien nachgeladen. Wenn du alles "händisch" machen willst: Deine xlcd.h befindet sich in \microchip\xc8\v1.21\include\plib\xlcd.h
Also das Problem war nicht wie ich dache ein Funktionsproblem sondern einmal war *Im "Header" void putsXLCD(const char *buffer)* *im "C" File void putsXLCD(char *buffer)* warum das const weg war, ischh weiß es nicht, zum zweiten im C18 war bis auf das Main File nix anderes drinnen, Projects-Source Files bei XC8 musste ich alle files da einfügen und dann hatte ich keine Probleme mehr. Warum, vielleicht weiß das jemand von euch.
:
Bearbeitet durch User
Hi, Martin Michael schrieb: > *Im "Header" void putsXLCD(const char *buffer)* > *im "C" File void putsXLCD(char *buffer)* > warum das const weg war, ischh weiß es nicht, Das hängt vermutlich damit zusammen das dein Codebeispiel von 2003 ist. Wenn ich nicht gerade im Wald stehe gab es den Microchip eigenen C18 Compiler da noch nicht, vom XC8 ganz zu schweigen ;-) Mit den Neueinführungen der jeweiligen Compiler wurden dann sicher auch die Libs. zum Compiler aktualisiert -Manchmal aber auch verschlimmbessert. (Zumindest beim C18 ist die XLCD bestandteil des Compilerpaketes) > zum zweiten im C18 war bis auf das Main File nix anderes drinnen, > Projects-Source Files > bei XC8 musste ich alle files da einfügen und dann hatte ich keine > Probleme mehr. Warum, vielleicht weiß das jemand von euch. Also: > Projects-Source Files ^^^ Genau da gehören die Quellfiles normalerweise tatsächlich auch eingefügt. Wenn man die Pfade zu diesen Files allerdings an anderer Stelle passend einfügt (generelle Suchpfade in den Compilereinstellungen (< >!)oder expliter Pfad beim Include ( " "! ) macht der Compiler das aber auch ohne den expliziten Eintrag unter Source Files ohne Mucken. Vermutlich war der Pfad bei deiner C18 Installation einmal definiert und bei deinem XC8 jetzt nicht mehr. Ob es aber an dir oder den generellen Voreinstellungen liegt kann ich aber auch nur vermuten. Gruß Carsten
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.