stefu schriebAuch auf die Gefahr hin, dass es für jemanden der hier Profi ist dumm wirkt, erlaube ich mir die Frage, weswegen dieses Vorgehen besser ist als zwei getrennte Werte, die direkt abgerufen werden können?
Eine Notwendigkeit für zusammengesetzte Werte liegt in der dann vorhandenen Möglichkeit, sie vergleichsweise einfach verteilen und verarbeiten zu können, selbst in Prozessorregistern und sogar über Prozessgrenzen hinweg, was ja in der Message-Verarbeitung der Fall sein muss. Es wirft hingegen sehr schnell ernsthafte Probleme auf, wenn man grössere, zusammengesetzte Datenwerte per Message verschicken will, beispielsweise einen struct oder auch eine Zeichenkette. Wie soll ein anderer Prozess dann darauf zugreifen? Man muss dabei auch bedenken, dass Messages gepostet werden können, d.h. dass ihre Verarbeitung nicht unmittelbar synchron, sondern ggf. asynchron erfolgt, irgendwann später, wenn der Empfänger Zeit hat. Das bedeutet aber dann auch, dass der Empfänger festlegt, wann er auf die Parameterwerte zugreift, wie lange diese also bereitstehen müssen.
In anderen Fällen ist es schlicht praktisch, zusammengesetzte Werte gemeinsam zu verarbeiten, beispielsweise Zeichen, die in einem Multi-Byte-Zeichensatz vorliegen, z.B. wchar_t, der eben nicht als struct von zwei Bytes definiert ist, sondern schlicht als unsigned short. Und es gibt ja Zeichensätze, die bis zu vier Byte pro Zeichen erlauben. Eine Sortierfunktion von Integern sieht immer wesentlich einfacher aus als eine von structs mit mehreren Einzelwerten.