www.mikrocontroller.net

Forum: Compiler & IDEs 2 Fragen zu C


Autor: Ulrich Schneider (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich hätte mal zwei Fragen zu C...

1. Bitfelder:
Wenn ich mit struct {} ein Bitfeld anlege, und dabei z.B. ein Feld mit
drei Bit Breite definiere - kann ich dann sicher sein, dass Operationen
die den Wert dieses Feldes verändern kein anderes Feld verändern? Wenn
ich also beispielsweise versuchen würde den Wert 15 an das 3-Bit-Feld
zuzuweisen, oder das 3-Bit-Feld bereits den maximalen Wert 7 hätte und
ich würde es inkrementieren - kann ich dann davon ausgehen dass die
obersten Bits des neuen Wertes automatisch abgeschnitten werden und sie
nicht stattdessen den Wert eines benachbarten Feldes verändern?

2. #define in .c bzw. .h Dateien:
Wenn ich Programmcode in Module aufteile - z.B. für UART-Zugriff uart.c
und uart.h, und ich dann im Hauptprogramm uart.h include: Gehe ich Recht
in der Annahme, dass Konstanten etc. die ich der uart.c-Datei per
#define definiere nur innerhalb dieser Datei gültig sind, während
#defines die in der uart.h definiert werden durch das includen von
uart.h im Hauptprogramm auch dort gültig sind (und daher z.B. zu
Problemen führen könnten, falls dort bereits eine Konstante/ein Makro
etc. mit gleichem Namen existiert)?

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> kann ich dann sicher sein, dass Operationen
> die den Wert dieses Feldes verändern kein anderes Feld verändern?

Ja.

Zu 2.) Ja, das hast du korrekt verstanden.

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.