-
        

Ergebnis 1 bis 9 von 9

Thema: Warning beim Kompilieren

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    09.09.2004
    Ort
    BitteKeinePrivatenDatenAngeben! Danke!
    Beiträge
    63

    Warning beim Kompilieren

    Anzeige

    Beim kompilieren folgendes Programms:

    Code:
    int main(void)
    {
    	initRobotBase(); // Initialization – ALWAYS CALL THIS FIRST!
    	// [...] Program code...
    	while(1); // Infinite loop
    	return 0;
    }
    erhalte ich folgendes Warning:

    Line 3: implicit declaration of function 'initRobotBase'

    Dass in meinem Code keine "#include"'s vorkommen liegt daran, dass ich diese über meine IDE(KamAVR) inkludiere. Inkludiert werden folgende Dateien:

    RP6RobotBaseLib.h
    RP6RobotBaseLib.c
    RP6uart.h
    RP6uart.c

  2. #2
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.782
    Blog-Einträge
    8
    Hallo

    Ich verwende auch KAMAvr und habe

    #include "RP6RobotBaseLib.h"

    im Programmkopf. Unter "Files" sind nur RP6RobotBaseLib.c und RP6uart.c eingetragen.

    Gruß

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    09.09.2004
    Ort
    BitteKeinePrivatenDatenAngeben! Danke!
    Beiträge
    63
    Zitat Zitat von radbruch
    Hallo

    Ich verwende auch KAMAvr und habe

    #include "RP6RobotBaseLib.h"

    im Programmkopf. Unter "Files" sind nur RP6RobotBaseLib.c und RP6uart.c eingetragen.

    Gruß

    mic
    Wenn ich "#include"'s verwende geht bei mir aber garnichts, da die zu inkludierenden Dateien dann nicht gefunden werden.

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    35
    Beiträge
    1.987
    Die .h müssen aber trotzdem im Quellcode per #include eingebunden werden.
    Ist einfach in C so vorgegeben.
    #ifndef MfG
    #define MfG

  5. #5
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.782
    Blog-Einträge
    8
    Die " " im Include-Befehl bedeuten, dass die Datei im selben Verzeichniss ist wie die Programmdatei. Ich verwende dafür einen Ordner mit dem Namen Projekte und habe alle Dateien aus RP6Lib/RP6Base und RP6Lib/RP6Common dorthin kopiert. In diesem Ordner speichere ich auch die Projektdateien (*.kam) und die eigentlichen Programme (*.c).

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    09.09.2004
    Ort
    BitteKeinePrivatenDatenAngeben! Danke!
    Beiträge
    63
    Zitat Zitat von Jaecko
    Die .h müssen aber trotzdem im Quellcode per #include eingebunden werden.
    Ist einfach in C so vorgegeben.
    Das sehe ich anders, da

    1. ich nur eine Warning aber keine Errors erhalte.
    2. aus dem Sourcecode ein funktionsfähiges Binärfile(.hex) kompiliert wurde

  7. #7
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    54
    Beiträge
    5.782
    Blog-Einträge
    8
    Hallo

    Zu 1: Warnungen sind die Vorboten von völlig unerklärlichen Programmfunktionen. Nach kurzem googlen weiß ich nun, dass der Kompiler bei dieser Warnung zwar weitermacht, aber für die ihm nicht genauer bekannte Funktion irgendetwas reincodiert. Viel Spass beim Debuggen, wenn sich das mal auf das Programm auswirkt.

    Und zu 2:
    Siehe zu 1

    Besser keine Warnungen tolerieren!

    Gruß

    mic

    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    09.09.2004
    Ort
    BitteKeinePrivatenDatenAngeben! Danke!
    Beiträge
    63
    Ich habe jetzt mal die Empfehlungen befolgt und statt die Dateien einfach über die IDE zu inkludieren folgende Include-Anweisungen an den Anfang des Quelltexts geschrieben:

    #include "RP6RobotBaseLib.h"
    #include "RP6RobotBaseLib.c"
    #include "RP6uart.h"
    #include "RP6uart.c"

    Seitdem bekomme ich folgende Errors:

    Code:
    In file included from censored.c:2:
    RP6RobotBaseLib.c: In function 'initRobotBase':
    RP6RobotBaseLib.c:1774: error: 'UBRRH' undeclared (first use in this function)
    RP6RobotBaseLib.c:1774: error: (Each undeclared identifier is reported only once
    RP6RobotBaseLib.c:1774: error: for each function it appears in.)
    RP6RobotBaseLib.c:1775: error: 'UBRRL' undeclared (first use in this function)
    RP6RobotBaseLib.c:1776: error: 'UCSRA' undeclared (first use in this function)
    RP6RobotBaseLib.c:1777: error: 'UCSRC' undeclared (first use in this function)
    RP6RobotBaseLib.c:1777: error: 'URSEL' undeclared (first use in this function)
    RP6RobotBaseLib.c:1778: error: 'UCSRB' undeclared (first use in this function)
    RP6RobotBaseLib.c:1787: error: 'GICR' undeclared (first use in this function)
    RP6RobotBaseLib.c:1788: error: 'ISC2' undeclared (first use in this function)
    In file included from censored.c:4:
    RP6uart.c: In function 'writeChar':
    RP6uart.c:73: error: 'UCSRA' undeclared (first use in this function)
    RP6uart.c:74: error: 'UDR' undeclared (first use in this function)
    RP6uart.c: At top level:
    RP6uart.c:219: warning: 'USART_RXC_vect' appears to be a misspelled signal handler
    RP6uart.c: In function 'USART_RXC_vect':
    RP6uart.c:223: error: 'UDR' undeclared (first use in this function)
    RP6uart.c: In function 'clearReceptionBuffer':
    RP6uart.c:297: error: 'UCSRB' undeclared (first use in this function)
    RP6uart.c:298: error: 'UDR' undeclared (first use in this function)

  9. #9
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    35
    Beiträge
    1.987
    Dass das compilieren ohne #include bei dir geht, liegt nur an der IDE. Übertrag das Programm z.B. mal nach Keil µVision, der haut dir dank der fehlenden #includes gleich mal Errors auf den Tisch.

    Ich compilier z.B. immer mit der Option "Warnings as errors", somit lauf ich garnicht erst Gefahr, Warnungen zu übersehen bzw. absichtlich zu ignorieren.

    Die aktuellen Fehler lesen sich so, als wäre ein falscher (oder garkein) AVR ausgewählt. Wird in irgend einer Datei die avr/io.h eingebunden?
    Oder ist in den Projekteinstellungen der richtige AVR ausgewählt (ATMega32 z.B.)?
    #ifndef MfG
    #define MfG

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •