2016-04-22 58 views
-4

我正在手動重寫代碼。如何將大C項目轉換爲VC++

我有50+ .c文件和20+ .h文件

我需要將它們轉換爲一類,所以我可以在一個單一的EXE

我運行多個實例大的C程序沒有將C項目轉換爲C++的經驗。是否有指導要遵循?

我已經做了一些小的研究與谷歌和有以下計劃:

  1. MV C到CPP和編譯,修復所有隱含converation到露骨converation

  2. 刪除所有靜態關鍵字(文件範圍),解決全局名稱衝突

  3. 爲類聽衆(類FOO)創建全局h文件,將所有函數和變量定義作爲成員移動到類中

  4. 在其他的.h文件中定義的宏和consts,包括與外部的「C」關鍵字

  5. 重命名所有功能cpp文件到FOO ::功能

+0

C++並不神奇,並且不會突然讓你運行多個實例。此外,這會造成相當不可維護的代碼。 – MSalters

+0

@MSalters我沒有要求一個腳本或其他東西來爲我做,我手動重寫它。我只是在尋找一些東西。 – Boying

+0

絕對不要忘記利用RAII智能指針來管理資源。 –

回答

0

這聽起來像你的計劃將50個文件轉換爲一個C++類並實例化該類的多個實例。充其量,這是對C++類的嚴重濫用。在實踐中,這不太可能會起作用,因爲您仍然只有一個執行線程。這些對象中只有一個可以一次運行。每次執行I/O操作(例如)時,所有內容都會停止,直到I/O操作完成。

我對你的特殊情況一無所知,但總的來說,如果我正在處理這個問題,我會保留現有的代碼運行多個進程。我還會編寫一個shim類,使用進程間通信(IPC)管理與這些進程的通信,例如UNIX套接字或命名管道。

如果您仍然覺得需要多個實例,那麼將您當前源代碼的一小部分劃分出來,並將其移植過來以便理解問題。

+0

IPC版本是該程序的第一代,我使用set parent將C GUI嵌入到C++ GUI中,但是,根據MSDN的說法,將父母設置爲其他程序是非法的(在新窗口中擔心兼容性問題)。另一個缺點是,如果子進程獲得焦點,外部gui失去焦點並且標題欄被鎖定到後臺模式,並且您無法單擊子GUI將其放到前面。 – Boying

+0

將C程序添加到我的C++程序中不會導致性能問題,因爲它使用的是winapi回調,運行多個實例就像在GUI中添加更多的win32控制盒一樣,不會導致性能問題。 – Boying