| Zitat: |
Original von Guybrush
| Zitat: |
Original von Steffi
DAS kann auch nur von nem C-Professor kommen
das versteh ich nämlich nicht mal mit Lösung (Quelltext)... ich glaub, ich kann genau so gut weiter an meinen Hausaufgaben für Montag rumexerzieren ... (seit 4h ohne Schimmer
) |
Das ist einfach der zerlegte Satz. Jeder Nebensatz als Gleichung hingeschrieben, fertig! Naja, zumindest nachdem man das Gleichungssystem dann gelöst hat.
Ist es denn eine interessante Hausaufgabe? Dann lass uns doch mitknobeln...
|
weiß ja nicht, was dich so intressiert...
10.) typedef, struct, union, enum, Bitfeld
a) In einem Betriebssystem, das mit "Message Passing" arbeitet, senden sich die
Tasks gegenseitig Nachrichtenobjekte über einen Nachrichtendienst des
Betriebssystems. Da unterschiedliche Tasks mit unterschiedlichen Basis-Datentypen
arbeiten könnten, werden in einer Datei inttypes.h durch typedef (nicht durch #define
wie in Aufgabe 1b) folgende Datentypen vereinbart:
Int8 8-Bit-Integerzahl mit Vorzeichen
Uint8 8-Bit-Integerzahl ohne Vorzeichen
Int16 16-Bit-Integerzahl mit Vorzeichen
Uint16 16-Bit-Integerzahl ohne Vorzeichen
Int32 32-Bit-Integerzahl mit Vorzeichen
Uint32 32-Bit-Integerzahl ohne Vorzeichen
Int8 und Uint8 sind dabei unproblematisch; die anderen Typen müssen durch
bedingte Compilation abhängig von den Informationen in limits.h definiert werden.
Ein Nachrichtenobjekt (Message) besteht aus den Kennungen von Absender und
Empfänger, beide vom Typ Taskid (wird später beschrieben), der Nachrichtenpriorität
(Uint

, dem Nachrichtencode (Uint16) und einem Parameter vom Typ Any. Any ist
eine struct aus einem Code für den Datentyp (Uint

und einer union, die den eigent-
lichen Wert enthält. Als Datentypen kommen Int32, float, ein Array aus 4 chars oder
ein Zeiger auf Any in Frage; es kann auch sein, dass die Nachricht keinen Parameter
hat. Die Datentypcodes werden durch eine enum definiert. Das Format der Taskid ist
- abhängig von der Projektgröße - Uint8, Uint16 oder Uint32; dies wird in einer Datei
taskid.h vereinbart. Die Variante "Zeiger auf Any" ermöglicht es, einen dynamisch
erzeugten Array aus mehreren Any-Parametern zu übermitteln, der durch einen leer-
Parameter abgeschlossen wird.
Vereinbaren Sie
die Datei inttypes.h,
die Datei taskid.h für den Fall Uint16,
das Nachrichtenobjekt in einer Datei message.h.
Achten Sie auf die richtigen #includes! Machen Sie sich eine Skizze zum Aufbau der
Datentypen Any und Message!
Zur Aufgabe gehört natürlich auch ein Testprogramm: Erzeugen Sie eine Message
der Priorität 4 von der Task 4711 an die Task 32168 mit dem Nachrichtencode 15
und einem float-Parameter mit dem Wert 3.141 und geben Sie diese am Bildschirm
aus; dazu benötigen Sie eine Ausgabefunktion, die in der Lage ist, den Datentyp Any
richtig zu interpretieren!
....
also bei mir kann von Interesse keine Rede sein, mehr von Verzweiflung