[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