• Keine Ergebnisse gefunden

c.seepold@uni-wuppertal.de WS2010/2011–¨Ubungsblatt38.November2010Abgabe:bis15.November2010an GenerischeProgrammierung(SpezielleKapitelderpraktischenInformatik)

N/A
N/A
Protected

Academic year: 2022

Aktie "c.seepold@uni-wuppertal.de WS2010/2011–¨Ubungsblatt38.November2010Abgabe:bis15.November2010an GenerischeProgrammierung(SpezielleKapitelderpraktischenInformatik)"

Copied!
2
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

BERGISCHE UNIVERSIT ¨ AT WUPPERTAL

GAUSS-STRASSE 20 42119 WUPPERTAL TELEFAX (0202) 439-2901 TELEFON (0202) 439-0 WWW www.uni-wuppertal.de

Fachbereich C

MATHEMATIK UND NATURWISSENSCHAFTEN Fachgruppe Mathematik und Informatik

Generische Programmierung

(Spezielle Kapitel der praktischen Informatik)

WS 2010/2011 – ¨ Ubungsblatt 3 8. November 2010

Abgabe: bis 15. November 2010 an c.seepold@uni-wuppertal.de

Prof. Dr. Hans-J¨urgen Buhl Praktische Informatik / Numerik

E-Mail: Hans-Juergen.Buhl@math.uni-wuppertal.de WWW: http://www.math.uni-wuppertal.de/buhl

Aufgabe 1. Object file

Lesen Sie: http://docs.hp.com/en/B2355-90655/ch02s03.html

Was ist ein Object-File? Weshalb wird es ben¨otigt? Was enth¨alt es zu diesem Zweck, was nicht?

Wof¨ur steht das Akronym ELF? Wie unterscheiden sich ”executable“,

”relocatable“ und

”shared object“ ELF-Dateien voneinander?

Wie kann man die Symbole einer Objektdatei, wie die benutzten shared Bibliotheken ermitteln?

Aufgabe 2. BidirectionalIterator

Diskutieren Sie den BidirectionalIterator der STL als abstrakten Da- tentyp: Welche Operationen sind mit welchen Eigenschaften vorhanden, ...

Warum ben¨otigt man ihn f¨ur den generischen Algorithmusreverse()? Was steckt hinter dem Requirement EqualityComparable? Welcher ge- nerische Algorithmus ben¨otigt einen dieses Requirement erf¨ullenden Templateparameter?

Aufgabe 3. Name mangling Im Artikel

”Calling conventions for different C++ compilers and ope- rating systems“

(http://www.agner.org/optimize/calling conventions.pdf) wird das

”name mangling“ der g¨angigen C++-Compiler beschrieben.

Wozu wird es ben¨otigt? Schreiben Sie ein Programm mit vierfach ¨uber- ladener Funktion, erzeugen Sie dessen Objektdatei und sehen Sie sich die entstandenen

”mangled names“ an (Hinweis: benutze nm).

1

(2)

Warum kann in C++ der Typ des Funktionsergebnisses nicht zur Un- terscheidung weiterer ¨uberladener Funktionsvarianten benutzt werden?

Welche Abk¨urzungen werden im GNU3-Mangling f¨ur die C++- Operatoren (Tabelle 17 des obigen Artikels) benutzt?

Aufgabe 4. Uberladene C++-Funktionen¨

Erzeugen Sie mit Hilfe einer Template-Funktion mehrere ¨uberladene Funktionen und benutzen Sie sie in einem Testrahmenprogramm.

Betrachten Sie mit Hilfe von nm, welche Inkarnationen genau erzeugt wurden (benutzen Sie c++filt zum Demanglen).

Wie k¨onnen Sie die Inkarnation weiterer Varianten der Template- Funktion erzwingen?

2

Referenzen

ÄHNLICHE DOKUMENTE

Demonstrieren Sie static assert() in einem Beispielprogramm, das nur compiliert werden kann, wenn Ihre C++-Sprachumgebung einen 4 Byte langen int-Typ besitzt. Benutzen Sie dabei die

Statten Sie die Templatefunktion arithAverage(T1 x, T2 y) (Auf- gabe 1/Blatt 6) mit eigenen Boost-Concepts aus und benutzen Sie das Makro BOOST CONCEPT REQUIRE() zur Erzwingung

Demonstrieren Sie die Benutzung von static assert(), um die Template-Metafunktion template <unsigned long N> struct binary::value gegen einen unsinnigen Parameter

Demonstrieren Sie static assert() in einem Beispielprogramm, das nur compiliert werden kann, wenn Ihre C++-Sprachumgebung einen 4 Byte langen int-Typ besitzt. Benutzen Sie dabei die

[r]

• private -Vererbung: Alle Elemente der Basisklasse werden private Member der abgeleiteten Klasse!. • public -Vererbung: public -Member der Basisklasse werden public -Member

Falko Lorenz, Karin Halupczok SoSe 2013. Abgabetermin:

1 : Die einzelnen Speichersteine besitzen jeweils die gleichen Ein-und Ausgangsadressen, werden aber durch einen Art Schalter getrennt angesteuert.. Es wird eine extra