Thread View: de.comp.lang.c++
2 messages
2 total messages
Started by Gerhard Traeger
Mon, 04 Mar 1996 19:43
most-faq: template instantiation&compiler specifics
Author: Gerhard Traeger
Date: Mon, 04 Mar 1996 19:43
Date: Mon, 04 Mar 1996 19:43
69 lines
4061 bytes
4061 bytes
kuehl@uzwil.informatik.uni-konstanz.de (Dietmar Kuehl) hat geschrieben: > Ich kann nicht nachvollziehen, dass dies die am haeufigsten gestellte > Frage ist. Ich gebe zu, ich hatte nicht nachgezaehlt. Nur "faq" ohne Vorsatz waere zu missverstaendlich gewesen. Aber clc++m hat wohl gegen diese Anfaenger- Frage auch einen a-priori-Filter. > Die Betonung liegt uebrigens durchaus auf "funktionsfaehig" und gemeint > ist nicht die Beschreibung, in der der Compiler behauptet, was der Compiler > kann! MS:Introducing Visual C++(2.0): MSVC 2.0 (nutzbar nur fuer Win32, fuer Windows3.1 geht nur 1.5) unterstuetzt Funktionen- und Klassen-Templates. Offensichtlich problemlos, den ausser dieser Behauptung ist kein weiterer Hinweis notwendig. (O-Ton Colin Begg Colin@begg.octacon.co.uk: - >Template classes in Borland C++ are very useful. Does anyone know - >about an equivalent of this concept in MSVC++, or is that too - >difficult for microsoft developpers ?... - Yes, as is exception handling or other C++ V3 stuff.) >: 1. Borland-C++: >: Template-Deklaration und -Definition in die header-Datei schreiben, >Zu fordern, dass es so gemacht wird, ist nicht Standard konform. O-Ton jjenkins@wpo.borland.com (Jeff Jenkins at Borland International): - Why not just stick the template class in the header, declarations, - definitions and all! Then #include it where you need it! Mag sein, dass er nicht zu den Compiler-Entwicklern gehoert. Aber schockiert hat er mich trotzdem. >: - header und source den gleichen Basisnamen haben und >: - alle Quellen im gleichen Verzeichnis stehen. >Nein. Das ist nicht unbedingt noetig (zumindest nicht fuer den >generellen Ansatz; fuer die Implementation in SUN C++ schon...). Die meinte ich auch. Bisher habe ich nur g++2.7.2/linux-1.2.13(a.out) und SUN C++ 4.0.1 selber ausprobiert. > Eine Moeglichkeit ... aus den Files mit den Template Source spezielle > Objektfiles zu generieren Das heisst, der Compiler hat ein, optional waehlbares, Verzeichnis in dem er, ohne Ruecksicht auf die Position der Quellen im Dateibaum, diese speziellen Objektfiles ablegt? Ich will schliesslich nicht staendig einen riesigen Include-Pfad angeben, der dann auch noch fuer jedes Template durchsucht wird (ala Cfront, siehe Jan Willamowius). >Ich verwende gelegentlich Klassen, deren Name, wenn ich alle Templates >ersetze (der Compiler ist bei Fehlermeldungen so freundlich, mir die >Arbeit abzunehmen :-), auf 1KB zugeht. Ich weiss, Makros sind boese, aber ich kuerze Instanzen von Templates mit Makros ab. Damit wird die Quelle wieder kurz und (fuer mich) uebersichtlich. Wozu soll eigentlich das Zurueckgehen bis auf die Grundtypen bei den Fehler- meldungen gut sein? Bisher nervt es mich nur. >Mit Standard konformen Compilern kommt das wieder... >I am a realistic optimist Ein Freund der Widerspruechlichkeit! (schon mal einen SUN-SPARC-Printer an einer SUN unter SUN-Solaris 2.4 mit dem SUN-admintool verwaltet? Oder ein X11-Programm auf SUN10/C++4.0.1 portiert, dass irgendwo eine globale Variable "stat" hatte? Die Laufzeit- fehlermeldungen sind ungeheuer reproduzierbar und aufschlussreich :-/ Ich gebe ja zu, dass die explizite Instanzenbildung nicht schoen ist. Nach meiner Erfahrung reduzieren Versuche zur trickreichen Automatisierung aber allzuoft nicht die Fehlerhaeufigkeit (des "Mensch-Maschine-Systems"), erhoehen aber den Aufwand zur Behebung des Fehlers erheblich. Eine "brute force"-Methode, die immer funktioniert, waere mir lieber als die Notwendigkeit, staendig die Fehler schlecht implementierter hoher Ideale umgehen oder ertragen zu muessen. MfG, Gerhard.
Re: most-faq: template instantiation&compiler specifics
Author: Dietmar Kuehl
Date: Mon, 04 Mar 1996 22:30
Date: Mon, 04 Mar 1996 22:30
81 lines
4751 bytes
4751 bytes
Hi, Gerhard Traeger (root@gt-priv.m.eunet.de) wrote: : kuehl@uzwil.informatik.uni-konstanz.de (Dietmar Kuehl) hat geschrieben: : > Ich kann nicht nachvollziehen, dass dies die am haeufigsten gestellte : > Frage ist. : Ich gebe zu, ich hatte nicht nachgezaehlt. Nur "faq" ohne Vorsatz waere : zu missverstaendlich gewesen. Aber clc++m hat wohl gegen diese Anfaenger- : Frage auch einen a-priori-Filter. Nein (ich weiss, dass clc++m keinen Filter dafuer hat, weil ich einer der Moderatoren bin...). Es ist eine Frage, die derzeit in clc++m diskutiert wird: Derzeit existierende C++ Compiler machen es halt nicht befriedigend. : > Eine Moeglichkeit ... aus den Files mit den Template Source spezielle : > Objektfiles zu generieren : Das heisst, der Compiler hat ein, optional waehlbares, Verzeichnis in dem : er, ohne Ruecksicht auf die Position der Quellen im Dateibaum, diese : speziellen Objektfiles ablegt? Ich will schliesslich nicht staendig einen : riesigen Include-Pfad angeben, der dann auch noch fuer jedes Template : durchsucht wird (ala Cfront, siehe Jan Willamowius). Das ist, aus Standard-Sicht, ein Implementationsdetail... Aber was spricht dagegen, einfach '.o' (oder '.obj' oder was man sonst erzeugt) zu verwenden, um vorcompilierte Templates zu speichern (i.e. nicht "echten" Objektcode, sondern eine Compiler interne Repraesentation). Sowas kann man dann wie gewohnt in Libraries packen etc. (Object-files werden ja auch nicht in irgendwelchen verschlungenen Pfaden gespeichert). Instanziiert werden die Templates beim Linken: Die noetige Information steckt ja in den Objektfiles. Ich kenne allerdings keinen Compiler der es so macht und ich bin auch (zumindest noch; interessieren wuerde es mich schon) kein Compilerbauer... : >Ich verwende gelegentlich Klassen, deren Name, wenn ich alle Templates : >ersetze (der Compiler ist bei Fehlermeldungen so freundlich, mir die : >Arbeit abzunehmen :-), auf 1KB zugeht. : Ich weiss, Makros sind boese, aber ich kuerze Instanzen von Templates mit : Makros ab. Damit wird die Quelle wieder kurz und (fuer mich) uebersichtlich. : Wozu soll eigentlich das Zurueckgehen bis auf die Grundtypen bei den Fehler- : meldungen gut sein? Bisher nervt es mich nur. Der Compiler weiss vermutlich nichts besseres. Ich kann damit auch nichts anfangen, ausser manchmal. : >Mit Standard konformen Compilern kommt das wieder... : >I am a realistic optimist : Ein Freund der Widerspruechlichkeit! :-) Nun ja, bei ADA funitioniert es ja auch (schon lange). Das Problem was die armen C++-Compilerbauer haben ist halt, dass sich die Anforderungen staendig aendern bzw. geaendert haben, andererseits jeder einen C++ Compiler haben will, der konform ist. Da werden die nicht ganz so wichtigen Sachen eben etwas aufgeschoben... Templates sind wichtig und sie funktionieren. Zumindest halbwegs. Der Luxus, dass man Deklaration und Definition trennt, dass alles automatisch geht, usw. der kann warten. : (schon mal einen SUN-SPARC-Printer an einer SUN unter SUN-Solaris 2.4 mit : dem SUN-admintool verwaltet? Das admintool habe ich vermieden, wo es ging. Inzwischen mache ich keine Systemverwaltung mehr. Ich weiss aber, dass man es besser vermeidet... : Ich gebe ja zu, dass die explizite Instanzenbildung nicht schoen ist. : Nach meiner Erfahrung reduzieren Versuche zur trickreichen Automatisierung : aber allzuoft nicht die Fehlerhaeufigkeit (des "Mensch-Maschine-Systems"), : erhoehen aber den Aufwand zur Behebung des Fehlers erheblich. Eine : "brute force"-Methode, die immer funktioniert, waere mir lieber als die : Notwendigkeit, staendig die Fehler schlecht implementierter hoher Ideale : umgehen oder ertragen zu muessen. Nun, die brute-force-Methode funktioniert ja auch. Aber ich halte sie nicht fuer besonders wartbar und umgehe bei Templates lieber die Restriktionen indem ich eben z.B. den Code von den Source-files aus include. Ich hoffe, dass das bald nicht mehr noetig ist... Immerhin ist das wohl Teil des "g++-reno" Projekts. -- dietmar.kuehl@uni-konstanz.de http://www.informatik.uni-konstanz.de/~kuehl I am a realistic optimist - that's why I appear to be slightly pessimistic
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads