[linux-l] Übergabe strukturierter Werte in C (was: Designfrage bzgl. Deckverwaltung)
Axel Weiß
aweiss at informatik.hu-berlin.de
Mo Nov 28 22:07:10 CET 2005
Frank Reker schrieb:
> man kann auch structs (oder classen) als wert uebergeben.
> zugegebener massen verursacht das meist unnoetigen overhead.
> aber die meisten werte die man uebergibt, sind nachwievor ints, floats
> und dergleichen.
Hi Frank,
das kann auch nach hinten losgehen. Ich hatte mal ein blitzsauberes
Modul, um mit komplexen Zahlen zu rechnen, das meiste inline. Die Zahlen
selbst waren struct mit re und im, und die sollten per Kopie übergeben
werden (auch die Rückgaben).[*]
Wollte das Modul einem DSP überhelfen (der so ein paar Multiplikationen
parallel auf einer A..backe macht). Leider weigert sich der Compiler
hartnäckig, strukturierte Werte aus Funktionen zurückzugeben. Auch ein
Behelf mit long long hilft nichts. Ist also nicht portabel...
Chiao,
Axel
[*] Die Parameterübergabe per Zeiger (oder in C++ per Referenzen, die
intern ja auch über Adressen abgewickelt wird) ist oft *sehr*
ineffizient, weil beim Zugriff auf externen Speicher und damit auf einen
Bus zugegriffen wird. Viele Prozessoren können überhaupt nur mit dem
rechnen, was sie in Registern halten.
Mehr Informationen über die Mailingliste linux-l