Headerdateien?!

OP #5267211
Lesenswert?
• ▲
▼
Hallo,

mir ist aufgefallen das z.B Atmel Studio (evtl. auch andere Kompiler) 
die Headerdateien nicht jedes mal neu übersetzen / kompilieren.

Kann man das in den Headerdateien irgendwie verankern?
Der Kompiler soll jedes mal beim kompilieren, die Headers auch mit 
einbeziehen.

Danke im Voraus.
#5267219
Lesenswert?
• ▲
▼
@Jan H. (janiiix3)

>mir ist aufgefallen das z.B Atmel Studio (evtl. auch andere Kompiler)
>die Headerdateien nicht jedes mal neu übersetzen / kompilieren.

Nö, die werden so oder so nur per #inlcude in einen Quelltext 
eingebunden.
Und ALLEIN werden sie so oder so nicht compiliert.

Was du vermutlich meinst ist die Fähigkeit der meisten Compiler/IDEs, 
die Abhängigkeiten einer Datei zu erkennen und dieser nur dann neu zu 
kompilieren, wenn sich eben diese Dateien geändert haben.

>Kann man das in den Headerdateien irgendwie verankern?

Nö, das macht der Compiler selber.

>Der Kompiler soll jedes mal beim kompilieren, die Headers auch mit
>einbeziehen.

Das macht der schon, keine Sorge.
OP #5267222
Lesenswert?
• ▲
▼
Falk B. schrieb:
> @Jan H. (janiiix3)
>
>>mir ist aufgefallen das z.B Atmel Studio (evtl. auch andere Kompiler)
>>die Headerdateien nicht jedes mal neu übersetzen / kompilieren.
>
> Nö, die werden so oder so nur per #inlcude in einen Quelltext
> eingebunden.
> Und ALLEIN werden sie so oder so nicht compiliert.
>
> Was du vermutlich meinst ist die Fähigkeit der meisten Compiler/IDEs,
> die Abhängigkeiten einer Datei zu erkennen und dieser nur dann neu zu
> kompilieren, wenn sich eben diese Dateien geändert haben.
>
>>Kann man das in den Headerdateien irgendwie verankern?
>
> Nö, das macht der Compiler selber.
>
>>Der Kompiler soll jedes mal beim kompilieren, die Headers auch mit
>>einbeziehen.
>
> Das macht der schon, keine Sorge.

Habe mich gewundert. Habe mit den Macros "__TIME__" & "__DATE__" die 
Zeit und das Datum gespeichert und wundere mich heute, wieso da noch das 
alte Datum drin steht, habe das Projekt neu kompiliert.

Wollte eigentlich, wenn ich main() kompiliere, das dass aktuelle Datum 
drinn steht.
Persönliche Seite #5267274
Lesenswert?
• ▲
▼
Jan H. schrieb:
> Habe mit den Macros "__TIME__" & "__DATE__" die Zeit und das Datum
> gespeichert

Wo?

Deine *.c-Datei wird nicht neu übersetzt, nur weil sich das Datum 
ändert. Solange sie aber nicht neu übersetzt wird, stehen natürlich in 
der erzeugten Objektdatei die Werte für _TIME__ und __DATE_ drin, die 
zum Zeitpunkt des letzten Übersetzens drinstanten.

Diese beiden "Macros" kommen übrigens nicht aus einer Headerdatei, 
sondern sind eine eingebaute Funktion des Compilers.
Gast #5267294
Lesenswert?
• ▲
▼
Falk B. schrieb:
> Ein einfaches clean + build all würde das Problem auch lösen ;-)

Korrekt ;)

Ich war als Anfänger auch verwirrt. Vor allem, weil nur nach dem 
abspeichern die Meckermeldung

>#warning F_CPU not defined!

kam. Bei erneutem kompilieren war das weg. Dadurch hatte ich 
herausgefunden, dass im Atmel-Studio nur neu kompiliert wird, wenn sich 
die Headerdatei auch geändert hat.

Daher braucht dich das nicht weiter interessieren. Der Compiler macht 
das schon. Einfach auf kompilieren drücken und gut ist. Du brauchst also 
kein "clean" zu verwenden, außer du willst das explizit :)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 8 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.