Ich verbessere jetzt mal, damit sich das nicht noch jemand falsch merkt.

Zitat von
Robert Marquardt:
Bei stdcall (frueher pascal genannt) ...
stdcall wurde noch nie
pascal genannt. Früher (16-Bit Windows) benutzten alle
API-Funktionen die
pascal Aufrufkonvention, heute benutzen sie
stdcall.

Zitat von
Robert Marquardt:
Damit kann man in C (deshalb der Name cdecl) nun die Parameter als Array ueber einen Pointer zugreifen.
Nicht falsch, aber vielleicht noch als Ergänzung: das ursprüngliche C kannte keine Prototypen. Man konnte die Routine
Code:
int open(name, flags, mode)
char *name;
int flags, mode;
{
}
auch einfach mit dem Parameter "5" aufrufen (und abstürzen lassen). Bei vielen C-Library-Funktionen (wie hier open) hat man dann optionale Parameter nach hinten gepackt, damit man sie einfach weglassen konnte ("mode" wird hier nur beim Anlegen einer neuen Datei gebraucht). Man kann also in ganz einfachem C nicht nur über ein Array auf diese Parameter zugreifen.

Zitat von
Robert Marquardt:
register ... Es werden so viele Parameter wie moeglich in Register gepackt und der Rest geht nach stdcall-Konvention.
Nein, danach geht's in der
pascal-Konvention weiter.
@Luckie: in deinem Beitrag ist aber alles korrekt dargestellt.