Article View: de.comp.lang.c++
Article #1750Re: most-faq: template instantiation&compiler specifics
From: 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
Technical Details
Message-ID:
<4hfqub$d8r@news.BelWue.DE>Path:
arc1-ca.pugleaf.net!news.belwue.de!uzwil!kuehlReferences:
<4hfh4o$8br@Dortmund.Germany.EU.net>Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!news.belwue.de!uzwil!kuehl From: kuehl@uzwil.informatik.uni-konstanz.de (Dietmar Kuehl) Newsgroups: de.comp.lang.c++ Subject: Re: most-faq: template instantiation&compiler specifics Date: 4 Mar 1996 22:30:35 GMT Organization: Fakultät für Mathematik und Informatik Distribution: world Message-ID: <4hfqub$d8r@news.BelWue.DE> References: <4hfh4o$8br@Dortmund.Germany.EU.net> Reply-To: dietmar.kuehl@uni-konstanz.de NNTP-Posting-Host: uzwil.informatik.uni-konstanz.de X-Newsreader: TIN [version 1.2 PL2]