Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

C/C++-spezifische Verknüpfungskonventionen

&pagelevel(3)&pagelevel

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.