www.mikrocontroller.net

Forum: Compiler & IDEs Inculde für Anfänger und welche, die es werden wollen


Autor: Michael Glunz (glunzl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich habe ein Problem beim #include, nachdem ich meine Init-Funktion für 
die HW auslagelagert habe. Target ist ein mega8515, WinAVR in aktueller 
Version.

main:
#include <avr/io.h>     // Register usw.
#include <stdint.h>    // Standard Integer Types

#include <Init.h>

// Funktionsprototypen
extern void Initialisierung(void) ; // Init.h

uint8_t test ;

int main(void)
{
  Initialisierung() ;

  while (1)
    {
      test = PIND ;
      PORTB = test ;

    }
  return 0 ;  // Rückgabewert der Hauptschleife
}

Init.h
// Funktionsprototypen
void Initialisierung(void)

Init.c
#include <avr/io.h>     // Register usw.
#include <Init.h>

/*****************************************************************************
*
*   Funktionsname   : Initialisierung
*
*   Rueckgabewerte  : Keine
*
*   Parameter    : Keine
*
*   Aufgabe     : Initialisierungen der HW
*
*****************************************************************************/
void Initialisierung()
{
  // PortA
    // Ext. SRam

  // PortB: Alles Ausgänge
    DDRB  = 0xff ;   // Datenrichtungsregister
    PORTB = 0x00 ;  // Pegel vorgeben (0= LED EIN)
 
  // PortC
    // Ext. SRam


  // PortD
    // Default Eingänge
  
  
  // MCUCR - MCU Control Register
    MCUCR |= (1<<SRE) ;  //Ext. SRam einschalten
    
  
  // Status Register

}
Ich bekomme die Fehler:
Compiling C: main.c
avr-gcc -c -mmcu=at90s8515 -I. -gdwarf-2 -DF_CPU=4000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=./main.lst  -std=gnu99 -Wundef -MMD -MP -MF .dep/main.o.d main.c -o main.o 
main.c: In function 'Initialisierung':
main.c:7: error: storage class specified for parameter 'Initialisierung'
main.c:14: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
main.c:24: error: old-style parameter declarations in prototyped function definition
main.c:24: error: expected '{' at end of input
make.exe: *** [main.o] Error 1
Der bei mir aber mehr Durcheinander, als Ordnung bringt. Was mache ich 
verkehrt?

Gruß und Dank
Michael

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>void Initialisierung()

void Initialisierung(void)

Autor: Roland Praml (pram)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
in der init.h fehlt ein ;

ausserdem brauchst du den Funktionsprototyp in der main.c nicht 
definieren. dies wird ja schon durch das include der init.h erledigt.

Gruß
Roland

Autor: Michael Glunz (glunzl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Holger!

>void Initialisierung()
void Initialisierung(void)

Das war es auch nicht, die Fehler bleiben die gleichen.

In Beitrag "Wann #include *.c oder *.h?" wird es so beschrieben.

BTW: Im Makefile die Init.c mit aufzunehmen brachte auch keine 
Besserung.

Michael

Autor: Michael Glunz (glunzl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Roland!

Beide Ratschläge führten zum Erfolg :-) Danke!

BTW: Müssen im Makefile .c Files unter dem Eintrag

# List C source files here. (C dependencies are automatically 
generated.)

eingetragen werden, oder nicht? Der Kommentar sagt ja nicht, bei mir 
funktioniert es aber nicht ohne.

Michael

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael Glunz wrote:
> BTW: Müssen im Makefile .c Files unter dem Eintrag
>
> # List C source files here. (C dependencies are automatically
> generated.)
>
> eingetragen werden, oder nicht?
Natürlich müssen sie. Woher soll der Compiler sonst von ihrer Existenz 
wissen?

Abgesehen davon ist es bei einer projektabhängigen init sinnvoller, 
diese nicht im Standard-Library-Pfad unterzubringen, sondern im 
Projektverzeichnis, und sie dann mit
#include "Init.h"
anstatt
#include <Init.h>
einzubinden.

Autor: Michael Glunz (glunzl)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ih weiß nicht, woher der Compiler weiß woher die .c Dateien noch kommen. 
Im MFile Kommentar steht:
# List C source files here. (C dependencies are automatically generated.)
Das ließ mich vermuten, das der Compiler die .c Dateien dort sucht, wo 
die .h Dateien gefunden wurden.

Gruß
Michael

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.