Zusätzlich zu den im CRTE-Benutzerhandbuch beschriebenen ILCS-Konventionen sind in C/C++ die im Folgenden aufgeführten Besonderheiten zu beachten.
Parameterübergabe per Wert
In C/C++ werden (laut Sprachdefinition) die Parameter „by value“ übergeben. In der Parameterliste stehen deshalb die Werte der einzelnen Parameter. Diese Form der Parameterübergabe ist nur möglich, wenn ausschließlich C- und C++-Objekte miteinander verknüpft werden.
Informationen zum internen Aufbau der Parameterliste finden Sie im Abschnitt „Implementierungsabhängiges Verhalten gemäß dem ANSI-/ISO-C-Standard“.
Bei der Verknüpfung mit Objekten in anderen Sprachen müssen folgende Maßnahmen getroffen werden:
Bei Aufruf der anderssprachigen Routine muss die Adresse des zu übergebenden Datenelements angegeben werden, z.B. &par. Technisch gesehen wird dann die Adresse des Datenelements „by value“ übergeben.
Wird eine C/C++-Routine von einer anderssprachigen Routine aufgerufen, müssen die Formalparameter in C und C++ als Zeiger auf die zu übergebenden Datenelemente deklariert werden, z.B. f(T *par).
Übergabe von Gleitkommazahlen
Bei der Verknüpfung von K&R-C mit C89-, C11- oder C++-Objekten muss bezüglich der Übergabe von Gleitkommazahlen Folgendes beachtet werden:
Im K&R-Modus werden float
-Werte immer als double
-Werte übergeben. In den übrigen C-Modi werden float
-Werte nur dann als double
-Werte übergeben, wenn keine Prototyp-Deklaration vorhanden ist. Im anderen Fall werden float
-Werte tatsächlich als float
-Werte übergeben.
In den C++-Modi werden float
-Werte immer als float
-Werte übergeben.
Eine problemlose Übergabe von Gleitkommazahlen zwischen K&R-C und C89-, C11- oder C++-Objekten ist nur dann sichergestellt, wenn im C89- bzw. C11- bzw. C++-Programm die Parameter als double
deklariert werden.
Übergabe von Funktions-Returnwerten
Bei einer Strukturfunktion wird die Ergebnisstruktur in die Parameterliste kopiert und zusätzlich in R1 ein Zeiger auf die Parameterliste geliefert.