PIC Funktionen auslagern (C)

#3411097
Lesenswert?

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.
Gast #3411124
Lesenswert?

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
}
OP #3411397
Lesenswert?

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
#3411428
Lesenswert?

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.
Gast #3411446
Lesenswert?

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
OP #3412311
Lesenswert?

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.
Gast #3412457
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren