mehrere .c Dateien einbinden
Mittwoch, 23. Mai 2012
 
 

PIC Mikrocontroller Forum  |  PIC Mikrocontroller  |  Entwicklungswerkzeuge  |  MPLAB  |  mehrere .c Dateien einbinden « vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: mehrere .c Dateien einbinden  (Gelesen 2004 mal)
 
Rising
Newbie
*
Offline Offline

Beiträge: 38


Profil anzeigen
« am: Dezember 20, 2010, 10:39:10 »

Hallo Leute,

hab das Problem, das ich mehrere C- Dateien einbinden will, leider klappt das nicht so ganz.

wenn z.B. #include "displayinit.c" da steht dann bringt er mir einen Fehler in der displayinit.c datei bei dem letzten }

die displayinit.c datei enthält nur eine Routine ohne code.

vllt hat ja jemand eine Idee?

Besten Dank vorab
rising
Gespeichert
techno
Newbie
*
Offline Offline

Beiträge: 27


Profil anzeigen
« Antworten #1 am: Dezember 20, 2010, 22:08:08 »

Hallo Rising,

du must die Headerdatei einbinden.

Projektordner: #include "displayinit.h"
oder
Systemordner: #include <displayinit.h>

Mehr Informationen zu deinem Code wären hilfreich!

mfG
Mario
Gespeichert
Stampede
Globaler Moderator
Hero Member
*****
Offline Offline

Beiträge: 969



Profil anzeigen WWW
« Antworten #2 am: Dezember 21, 2010, 01:49:58 »

Hi,

Zitat
du must die Headerdatei einbinden.
Richtig, zum anderen bei Mehrfacheinbindungen #ifdef's beachten.

Gruss,
Stefan
Gespeichert

Rising
Newbie
*
Offline Offline

Beiträge: 38


Profil anzeigen
« Antworten #3 am: Dezember 21, 2010, 19:26:33 »

Hallo Leute,

erstmal Danke für eure Antworten Smiley

Frage: eine header Datei ist doch nur eine Definitionsdatei wo nur drin steht wo welche Variable/ Adresse/ Name steht?

Mein "Code" also nichts spektakuläres xD

main Datei:

Code:
===================================================
#include <p18f8722.h>
#include "DisplayInit.xxx"

void main(void)
{

}

===================================================
Code:
DisplayInit.xxx Datei:

===================================================
void DisplayInit(void)
{

}
wenn xxx = .c ist, kommt ein Syntax Fehler.

wenn xxx = .h ist, kommt:
Zitat
Error - could not find definition of symbol 'main' in file 'C:\MCC18\lib/c018i.o'.
Errors    : 1
kann in einer .h Datei auch ein "code" stehen, also nicht nur definitonen sondern eine Programm das ausgeführt werden kann?
wenn ja wie kann ich z.B. von main in der DisplayInit.xxx ein routine ansprechen sprich call?

Und warum sind dass dann keine .c Dateien sondern .h?

Besten Dank vorab, und sorry falls ich "komisch" frage
rising

Bitte Code-Tags verwenden!
Stampede
« Letzte Änderung: Dezember 22, 2010, 06:23:26 von Stampede » Gespeichert
Stampede
Globaler Moderator
Hero Member
*****
Offline Offline

Beiträge: 969



Profil anzeigen WWW
« Antworten #4 am: Dezember 22, 2010, 06:27:52 »

Hi,

Zitat
kann in einer .h Datei auch ein "code" stehen, also nicht nur definitonen sondern eine Programm das ausgeführt werden kann?
Im Normalfall nicht.
Zitat
wenn ja wie kann ich z.B. von main in der DisplayInit.xxx ein routine ansprechen sprich call?
Funktionsprototypen muessen dafuer in der Headerdatei vorhanden sein, sonst reicht ein privater Prototyp in der .c-Datei.
Schreib mal in die Funktionen auch was rein, habe schon erlebt dass MPLAB da manchmal rumafft.
Zitat
Und warum sind dass dann keine .c Dateien sondern .h?
Ich verstehe die Frage nicht.

Gruss,
Stefan
Gespeichert

Bernd
Globaler Moderator
Hero Member
*****
Offline Offline

Beiträge: 3815



Profil anzeigen
« Antworten #5 am: Dezember 22, 2010, 20:32:09 »

@Rising

Die Präprozessor-Direktive #include bewirkt nur einen reinen Textersatz, d.h. an die Stelle des #include fügt der Compiler den Inhalt der dort angegeben Datei in den Quelltext ein. Die verwendete Dateiendung ist dabei vollkommen unerheblich (man könnte z.B.  auch eine Textdatei mit der Endung .exe erstellen und diese einbinden). Die Verwendung der Dateiendungen .c und .h sind nicht anderes als eine Konvention.

Ein kleines Beispiel zu der gängigen Konvention findest Du hier.

Bei Deinem konkreten Problem drängen sich mir zwei Vermutungen auf:

  • nicht alle .c-Dateien sind dem Projekt in MPLAB hinzugefügt
  • die letzte Zeile einer über #include eingebundenen Datei ist nicht leer (wie vom C-Standard gefordert)

Viele Grüße

Bernd
Gespeichert

Rising
Newbie
*
Offline Offline

Beiträge: 38


Profil anzeigen
« Antworten #6 am: Dezember 26, 2010, 11:17:48 »

Hallo,

erstmal Danke für eure Mühe Smiley


mein Problem ist leider immer noch, wie kann ich z.B. unter main eine extra .c-Datei aufrufen wo eben irgend ein Code drin steht?

würd euch gern hier mein Code posten, aber hab ihn leider nicht zur hand.


MfG Rising
Gespeichert
Stampede
Globaler Moderator
Hero Member
*****
Offline Offline

Beiträge: 969



Profil anzeigen WWW
« Antworten #7 am: Dezember 26, 2010, 13:58:53 »

Hi,

Zitat
würd euch gern hier mein Code posten, aber hab ihn leider nicht zur hand.
Dann tu das bitte, sonst raten wir hier nur herum.

Gruß
Stefan
Gespeichert

Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  

Powered by MySQL Powered by PHP Made for Mozilla (Firefox) Made for Internet Explorer
Seite erstellt in 0.039 Sekunden mit 19 Zugriffen.
 
Top! Top!