2 Fragen zu C

Gast #238677
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)?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.