2016-04-22 6 views
-4
konvertieren

Ich manuell den Code neu schreiben.Wie kann ich ein großes C-Projekt in VC++

Ich habe ein großes C-Programm mit 50 + .c-Dateien und mehr als 20 h-Dateien

Ich brauche sie zu einer Klasse zu konvertieren, damit ich

ich mehrere Instanzen in einem einzigen exe ausführen können habe keine Erfahrung in der Umwandlung von C-Projekt in C++. Gibt es eine Anleitung zu folgen?

Ich habe einige kleine Forschung mit Google durchgeführt und folgende Plan:

  1. mv c CPP und kompilieren, fix alle impliziten converation zu explict converation

  2. entfernen alle statischen Schlüsselwort (für Datei Bereich), lösen globale Namenskonflikte

  3. erstellen Sie eine globale h-Datei für Klassensprecher (Klasse FOO), verschieben Sie alle Funktionen und Variablen defination in die Klasse als Mitglieder

  4. für die Makros und consts in anderen h-Dateien definiert, sind mit extern "C" Stichwort

  5. Umbenennungs alle Funktion in CPP-Dateien FOO :: function

+0

C++ ist nicht magisch und erlaubt Ihnen nicht plötzlich mehrere Instanzen auszuführen. Außerdem würde dies zu einem ziemlich unhaltbaren Code führen. – MSalters

+0

@MSalters Ich frage nicht nach einem Skript oder etwas, um es für mich zu tun, ich schreibe es manuell neu. Ich suche nur etwas im Allgemeinen. – Boying

+0

Vergessen Sie auf keinen Fall, RAII, Smart Pointer zum Verwalten von Ressourcen zu verwenden. –

Antwort

0

Es ist wie Ihr Plan klingt besteht darin, 50 Dateien in eine einzelne C++ - Klasse umzuwandeln und mehrere Instanzen der Klasse zu instanziieren. Dies ist bestenfalls ein schwerer Missbrauch von C++ - Klassen. In der Praxis ist es unwahrscheinlich, dass dies funktioniert, da Sie immer noch nur einen Ausführungs-Thread haben. Nur eines dieser Objekte kann gleichzeitig ausgeführt werden. Jedes Mal, wenn Sie eine E/A-Operation ausführen (beispielsweise), wird alles angehalten, bis der E/A-Vorgang abgeschlossen ist.

Ich weiß nichts über Ihren speziellen Fall, aber im Allgemeinen, wenn ich dieses Problem angehen würde, würde ich meinen bestehenden Code mehrere Prozesse statt laufen lassen. Ich würde auch eine Shim-Klasse schreiben, die die Kommunikation mit diesen Prozessen über Inter-Process Communication (IPC) wie UNIX-Sockets oder Named Pipes verwaltet.

Wenn Sie immer noch der Meinung sind, dass mehrere Instanzen der richtige Weg sind, dann schneiden Sie einen kleinen Bruchteil Ihres aktuellen Quellcodes aus und portieren Sie ihn, damit Sie die Probleme verstehen.

+0

die IPC-Version war die erste Generation des Programms, und ich benutze Set Eltern, um die C GUI in C++ GUI einzubetten, Laut MSDN ist das Festlegen von Parent für andere Procss jedoch illegal (Bedenken hinsichtlich Kompatibilitätsproblem in neuen Fenstern). Der andere Nachteil ist, wenn der Kindprozess den Fokus bekommen hat, die äußere GUI den Fokus verloren hat und die Titelleiste in den Hintergrundmodus übergegangen ist, und Sie nicht auf die Kind-GUI klicken konnten, um sie nach vorne zu bringen. – Boying

+0

Fügen Sie das C-Programm zu meinem C++ - Programm verursacht keine Leistung Problem, wie es WinAPI Rückruf verwendet, mehrere Instanzen ausführen ist genauso wie Sie hinzufügen mehr Win32 Steuerfelder in GUI, es verursacht nicht Leistungsproblem. – Boying

Verwandte Themen