c++ compilieren?? - Seite 2

Seite 2 von 2 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/c_compilieren_127498/page_2 - zur Vollversion wechseln!


Ringding schrieb am 19.10.2004 um 09:35

VC++ 6 hat bekanntlich eine sehr schwache Template-Implementierung (member templates fehlen z.B. völlig). Kein Wunder, der ist ja auch schon sehr angegraut. Dafür ist es mir aber im Gegensatz zum Borland-Compiler noch nie gelungen, dass er mir falschen Code erzeugt.

Das neue VC++ ist hingegen ein ausgezeichneter C++-Compiler.

Zitat
bin VC++ gegenüber sehr negativ eingestellt da es einfach vor keinen gröberen Fehlern bewahrt
Kann ich nicht nachvollziehen. VC++ hat sehr gute Debughilfen dabei, die jede Menge Blödsinn aufspüren können.


ica schrieb am 19.10.2004 um 11:05

besser wäre auch wenn du <iostream> inkludierst


d3ft0n3 schrieb am 19.10.2004 um 12:47

eine weitere freeware-alterative wäre der DevC-Compiler...
http://www.bloodshed.net/
hab ich selbst einige Zeit lang verwendet, muss aber zugeben, dass ich noch net wirklich viel anspruchsvolles programmiert hab.
jetzt benutz ich visual studio .net, ist eigentlich ziemlich praktisch wenn man sich mal an die oberfläche gewöhnt hat


DKCH schrieb am 19.10.2004 um 12:55

naja, dev-c++ benutzt auch den gcc. ist aber als IDE ganz nett, für so kleine übungs-sachen.


mat schrieb am 19.10.2004 um 14:19

gibt es eigentlich schon einen compiler der dllimport/export mit templates kann?

ich hab mal gehört gcc kanns, danach allerdings gleich wieder: "das bräuchte eine umstrukturierung des c++ models". nicht das es so wichtig wäre, die alternative ist ja die templateheader als intermediate code zu benutzen.


Ringding schrieb am 19.10.2004 um 14:35

Das kann nicht gehen. Man kann die templates schon für ein paar wohlbekannte Typen explizit instantiieren und das in die DLL schmeißen (so wird's in der MFC gemacht), aber um eine template-DLL einfach so verwenden zu können, bräuchte man irgendeine Art von Bytecode und/oder Compiler zur Laufzeit.


that schrieb am 19.10.2004 um 15:11

C++ verträgt sich überhaupt schlecht mit DLLs. Je nach Plattform hat man eine schöne Auswahl der folgenden Probleme:

- Übergabe von STL-Objekten (z.B. ein harmloser string) über die DLL-Grenze führt zu bösem Crash wegen unterschiedlichen Heaps (MSVC mit static Runtime)
- Es ist ein Glücksfall, wenn Konstruktoren und Destruktoren globaler Objekte in einer DLL korrekt behandelt werden.
- Ein funktionierendes "throw" über DLL-Grenzen ist auch ein Glücksfall.
- Wenn man bei Codeänderungen nicht alle betroffenen Binaries compiliert und ausliefert (oder der User nicht alle installiert), kommt es zu schwer nachvollziehbaren Crashes.
- Mischen von C++-DLLs, die mit unterschiedlichen Compilerversionen oder Compilern unterschiedlicher Hersteller erstellt wurden, ist ein Glücksspiel.

Gegen C++ innerhalb einer DLL spricht nichts, aber an DLL-Grenzen verwende ich ausschließlich Interfaces (ABCs) - das funktioniert zum Glück auf allen mir bekannten Plattformen.


Ringding schrieb am 19.10.2004 um 17:33

RTTI müsste dann wohl auch Probleme machen, hab's noch nie ausprobiert.




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025