VS6 zu VS8

SunnyBunny

Mitglied
Hallo, wir steigen gerade von VS6 auf VS8 um.
Programmieren objektorientiert mit C++.

Hat jemand Tutorials oder Ratschläge auf was man generell beim portieren von VS6 - Projekten in VS8(2005) beachten muss?

Z.B. bekomme ich lauter Warnung wie: "fopen ist unsicher benutze lieber fopen_s"
Muss man das Umsetzen -> hat das irgendwann Konsequenzen?

Muss ich nur die wenigern Fehler und vielen Warnungen bearbeiten oder ist noch mehr zu beachten.

Von der DLLs - Geschichte jetzt mal abgesehen, da habe ich doch einiges zu recherchiert (vcredist_x86.exe usw...).

Finde beim Googlen irgendwie nichts Brauchbares.

Danke für schnelle Antworten.
 
Moin!

Die Warnungen liegen daran, dass z.B. fopen als "deprecated" eingestuft ist. Es ist nicht 100%ig objektorientiert, daher gibt es jetzt fopen_s. Einfach mal in die MSDN schauen, da steht alles drin.

Die neuen Versionen solcher Methoden stehen in neuen Header-Dateien. Z.B. inkudiert man anstelle von <stdio.h> jetzt <cstdio>, anstelle von <string.h> jetzt <string>. Einfach immer bei solchen Meldungen sowohl MSDN befragen als auch in den Include-Ordner des Compilers schauen.

Probleme wird es dennoch vorerst nicht geben. Die Warnungen könnte man auch ignorieren. Um Warnungen zu deaktivieren, benutzt man ...

Code:
#pragma warning(disable: X)

.. wobei X für die Id der Warnung steht.

Gruß
Enum
 
Zuletzt bearbeitet:
Vielen Dank, das beruhigt ein wenig in Punkto unvorhersehbarer Probleme mit dem Umstieg. :)

Noch etwas:

Bei mir funktionieren die alten Header im VS8 noch. Ist das generell so, oder liegt es daran, dass ich VS6 noch parallel installiert habe?
 
@SunnyBunny

Die alten Header Funktionieren noch, auch wenn VS6 Deinstalliert wird. Das liegt daran, dass sie sowohl im VS6 - include - Ordner als auch im VS8 - Ordner sind. Die neuen Header sind meist auch nichts weiter als Sourcecodes, die die alten Header einbinden sowie Namensbereiche festlegen und neue Funktionen definieren.
Zu beachten wäre nur noch, dass bei nutzung der neuen Header diverse Elemente nur noch über den Namensbereich angesprochen werden können - so z.B. std::string.

Gruß
Enum
 
Die Warnungen liegen daran, dass z.B. fopen als "deprecated" eingestuft ist. Es ist nicht 100%ig objektorientiert, daher gibt es jetzt fopen_s.
Das hat nichts mit objektorientiert zu tun, sondern das "_s" am Ende der Funktion steht für "secure", also für sichere Funktionen. MS hat für diese Funktionen zusätzliche Test implementiert, um z.B. die negativen Folgen von Pufferüberläufen abzufangen.

Gruß
MCoder
 
@MCoder Stimmt !!

Doch ich habe nicht unrecht. Das alte fopen liefert einen Pointer auf FILE zurück, fopen_s wird der Pointer übergeben. Per Definition entspricht das eher einem Objektorientierten Schema. Allerdings lege ich keinen Wert auf den , zumal der Begriff seit seiner Einführung ein Streitthema ist.

So, jetzt hab ich mich gerechtfertigt und mein Ego befriedigt. ;-)

Gruß
Enum
 
Zuletzt bearbeitet:
Zurück