defines verständnisfrage FCPU Warning

OP #1713700
Lesenswert?
• ▲
▼
Hallo,

ich habe immer folgendes Warning:

c:/programme/winavr-20070525/bin/../avr/include/util/delay.h:84:3: 
warning: #warning "F_CPU not defined for <util/delay.h>"

nun habe ich in meinem Main schon extra diese Reienfolge angebracht:

#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#include <stdio.h>
#include <stdlib.h>
#define F_CPU 8000000
#include <util/delay.h>

wie bekomme ich das in den griff, das das richitg ineinander fasst? 
makefile?

Gruß,
Yve
#1713717
Lesenswert?
• ▲
▼
Yvonne J. schrieb:

> es kann doch aber nicht sein, das ich in jeder c Datei in der ich delay
> nutzen will, wieder FCPU definieren muss, das ist doch nicht richtig?

Doch das ist richtig.

Jedes C-File wird unabhängig von allen anderen compiliert. Daher muss in 
jedem C-File alles enthalten sein, was für dieses C-File relevant ist. 
Was in a.c drinnen steht, interessiert den Compiler nicht, wenn er b.c 
compiliert.

In welcher Form du jedem C-File eine Definition für F_CPU zur Verfügung 
stellst, ist allerdings eine ganz andere Geschichte.
#1713748
Lesenswert?
• ▲
▼
Yvonne J. schrieb:

> wenn ich soetwas in meinem header verbastel:
>
> #ifndef LTC2723WC_H
> #define LTC2723WC_H
>
>
> fdgdfg
>
>
> #endif
>
> um Ihn gegen mehrfaches einbinden zu (schützen) dann ist das define
> (Flag) auch gültig wenn ich diesen Header an anderen Stellen wieder
> einbinde

in derselben C-Datei

Der include Guard schützt dich vor solchen Dingen

main.c
******
1
#include "LTC2723WC.h"
2
#include "LTC2723WC.h"

Natürlich wird das niemand so schreiben. Trotzdem kann der Fall 
auftreten, dass ein Header File mehrmals inkludiert wird, wenn der 2.te 
include indirekt erfolgt: Ein a.h includiert ein b.h welches ein 
LTC2723WC.h inkludiert.
Schreibst du dann
1
#include "LTC2723WC.h"
2
#include "a.h"

Dann würde LTC2723WC.h 2 mal includiert werden. Das 2te mal dann eben 
über den Umweg a.h, b.h.

Davor schützt ein include Guard.

Vor dem Fall
LTC2723WC.h wird in a.c
LTC2723WC.h wird in b.c
includiert braucht er auch nicht schützen. Denn a.c wird ja sowieso 
getrennt von b.c compiliert.
Gast #1713771
Lesenswert?
• ▲
▼
Am einfachsten machst Du Dir ein "main.h" wo Du alle globalen defines 
und includes einträgst.

Bei alle andern C.Dateien brauchst Du dann bloss noch das "main.h" zu 
inkludieren plus spezifische Header-Dateien die nur für dies Sourcdatei 
benötigt werden.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.