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


von Sims (Gast)


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");
}

von Sims (Gast)


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

von Karl H. (kbuchegg)


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.

von Walter (Gast)


Lesenswert?

da fehlt irgendwie die Funktion main ....

von die ??? (Gast)


Lesenswert?


von Thomas B. (detritus)


Lesenswert?


Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.