Praktikumsaufgabe 2: Linkage mit C-Funktionen
Diese Praktikumsaufgabe soll helfen, den Aufrufmechanismus von Methoden zu
verstehen.
- Methoden werden beim Aufruf mit dem konkreten Objekt, für welches
sie aufgerufen werden, durch Übergabe eines versteckten Zeigers darauf
assoziiert.
- Die Übergabe des versteckten this-Zeigers kann durch den
Compiler derart optimiert werden, daß dieser nicht mehr auf dem Stack
auszumachen ist.
Wir wollen nun durch Implementieren einer (Pseudo-)methode in
der Programmiersprache C und expliziter Übergabe der Adresse des Zielobjektes
als erstes Argument an diese den Methodenaufruf simulieren. Die C-Funktion
soll ein Datenelement des Objektes modifizieren. Definieren Sie bitte hierfür
eine C++-Klasse LinkCPP mit einem Datenelement und zwei Methoden
volatile int get() const; und
volatile int set(int);
Speichern Sie bitte
die Klassendefinition im File PROTECT/LinkCPP.h, die Implementation
der Methoden im File PROTECT/LinkCPP.cc! Rufen Sie nun anstelle
der Zuweisung an das private-Datenelement in LinkCPP::set eine
C-Funktion LinkCPP_set auf und Übergeben Sie an diese zwei Argumente:
- 1.
- die Adresse des konkreten Objektes der Klasse LinkCPP
- 2.
- das Argument zur Modifikation des private-Datenelementes
Die Zuweisung
an das private-Datenelement soll innerhalb der C-Funktion erfolgen.
Speichern Sie bitte die Implementation der C-Funktion in einem File
PROTECT/LinkC.c!