mikrocontroller.net

Forum: Compiler & IDEs Warnungen im Projekt Freemodbus


Autor: Owen Senmeis (senmeis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Servus,

ich beschäftige mich mit dem Projekt Freemodbus 
(http://freemodbus.berlios.de) für den AVR mit dem AVR Studio. Nach der 
Kompilierung bekomme ich jede Menge Warnungen wie

\demo\AVR\port/port.h:114:1: warning: "UCSZ0" redefined
\demo\AVR\port/port.h:115:1: warning: "UCSZ1" redefined
\demo\AVR\port/port.h:116:1: warning: "UPM0" redefined

Der betroffene Code sieht wie folgt aus:
/* ----------------------- AVR platform specifics ---------------------------*/

#if defined (__AVR_ATmega168__)
#define UCSRB           UCSR0B
#define TXEN            TXEN0
#define RXEN            RXEN0
#define RXCIE           RXCIE0
#define TXCIE           TXCIE0
#define UDRE            UDRE0
#define UBRR            UBRR0
#define UCSRC           UCSR0C
#define UPM1            UPM01
#define UPM0            UPM00
#define UCSZ0           UCSZ00
#define UCSZ1           UCSZ01
#define UDR             UDR0
#define SIG_UART_TRANS  SIG_USART_TRANS

#elif defined (__AVR_ATmega169__)

#define SIG_UART_TRANS  SIG_USART_TRANS

#elif defined (__AVR_ATmega8__)
#define UBRR            UBRRL
#define TCCR1C          TCCR1A  /* dummy */
#define TIMSK1          TIMSK
#define TIFR1           TIFR
#define SIG_USART_DATA  SIG_UART_DATA
#define SIG_USART_RECV  SIG_UART_RECV

#elif defined (__AVR_ATmega16__)
#define UBRR            UBRRL
#define TCCR1C          TCCR1A  /* dummy */
#define TIMSK1          TIMSK
#define TIFR1           TIFR

#elif defined (__AVR_ATmega32__)
#define UBRR            UBRRL
#define TCCR1C          TCCR1A  /* dummy */
#define TIMSK1          TIMSK
#define TIFR1           TIFR

#elif defined (__AVR_ATmega128__)
#define UCSRB           UCSR0B
#define UBRR            UBRR0L
#define UDR             UDR0
#define TIMSK1          TIMSK
#define TIFR1           TIFR
#define SIG_UART_TRANS  SIG_USART0_TRANS
#define SIG_USART_DATA  SIG_USART0_DATA
#define SIG_USART_RECV  SIG_USART0_RECV
#define UCSZ0           UCSZ00
#define UCSZ1           UCSZ01
#define UPM0            UPM00
#define UPM1            UPM01
#define UCSRC           UCSR0C

#endif
Können diese Warnungen irgendwie beseitigt werden? Übrigens finde ich 
keine Zeile wie
#define AVR_ATmega168

im Sourcecode. Woher kriegt das Programm solche Defines?

MfG
Senmeis

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

Bewertung
0 lesenswert
nicht lesenswert
Owen Senmeis schrieb:

> im Sourcecode. Woher kriegt das Programm solche Defines?

meistens über die Commandline, mit der der Compiler aufgerufen wird.
Also Makefile untersuchen

> Können diese Warnungen irgendwie beseitigt werden?

Dazu muss man das angemäkelte #define mit der vorhergehenden #define 
Definition vergleichen um zu sehen worin sich die beiden Unterscheiden 
(nachdem alle weiteren Makros aufgelöst wurden). Da wird es Unterschiede 
geben, Compiler meckern normalerweise nicht bei #define Redefinitionen 
die aufs gleiche rauslaufen. Dann muss man sich die verwendende Stelle 
ansehen und entscheiden, welche der beiden Varianten die richtige ist 
und die dann nehmen indem man den Source Code entsprechend umbaut (oder 
eventuell eine neue #ifdef Sektion einbaut oder ...   muss man von Fall 
zu Fall entscheiden)

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.