2 Fragen zu C

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren