mikrocontroller.net

Forum: Compiler & IDEs C -Code - versteh den Aufbau nicht


Autor: Sims (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi, versuche gerade in meine Codes mal mehr Ordnung zu bekommen ...


zwei Fragen:

a)Kennst jemand ne Seite, wo ein wenig erläutert wird, wie man "sauber" 
programmiert ?

b) Verstehe hier einen Aufbau nicht :

in main.c steht:      #include "delay.h"

in delay.h steht dann nur:

#ifndef DELAY_H
#define DELAY_H
void Delay(uint16 ms);
#endif


woher weiß jetzt der Linker, dass dazu die Datei delay.c gehört ?

in der steht das dann drin:

#include <avr/io.h>
#include <avr/pgmspace.h>
#include "delay.h"

void Delay(uint16 millisec)
{
  // this delay is calibrated for 8MHz clock.
    uint16 i;
    while (millisec--)
        for (i=0; i<1325; i++)
      asm("nop");
}

Autor: Sims (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...das Codebeispiel stammt auch von dieser Seite :


Beitrag "Digitaler Bilderrahmen mit mega8 S65 Display und SD-Karte"

Wäre klasse, woher weiß .h, dass .c dazugehört ?!?!?

Danke

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sims wrote:

> woher weiß jetzt der Linker, dass dazu die Datei delay.c gehört ?

Indem man ihm auf der Command Line bei seinem Aufruf beide
Object Dateien angibt.

Der Ablauf ist

* main.c compilieren. Das ergibt ein main.o
* delay.c compilieren. Das ergibt ein delay.o
* main.o und delay.o und diverse Libraries (die kennt der
  Linker sowieso) zusammenlinken um das fertige Programm zu erhalten


Wenn du eine IDE verwendest, die den Source Code in sog. 'Projekte'
organisiert, dann reicht es normalerweise, wenn man der IDE
bekannt gibt, dass das Projekt aus main.c, delay.c und delay.h
besteht. Die IDE leitet dann obige Schritte in die Wege.
Benutzt man einfach nur ein makefile, dann werden die Einzelteile
im makefile angegegeben.

Autor: Walter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
da fehlt irgendwie die Funktion main ....

Autor: die ??? (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Thomas B. (detritus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.