2011-09-07 58 views
2

您好我已經寫了一個程序在visual C++中,無論出於何種原因,現在我需要運行/編譯這個相同的程序在Turbo C++ 3.0。Visual C++到turbo C++

我已經設法從某些來源獲得編譯器,但當我嘗試編譯我的代碼時遇到了很多錯誤。我已經評論說「#include stdafx.h」爲ide中的目錄和庫設置適當的路徑。這些是給我的錯誤

#include <list> //Error unable to open include file list 

using namespace std; //Declaration syntax error 

typedef list<int> itemist; // , expected 

bool setPlayerChar(char key); // Type name expected // Declaration missing ; 

void generateItemList(piece market[9], itemlist &ilist) //) expected 

bool exit = false; // Undefined symbol 'bool' // statement missing ; 
+8

「20年前的C++編譯器」中的「Turbo C++ 3.0」? – NPE

+0

C++在編譯器發佈七年後才被標準化。如果編譯器在標準C++上窒息,你可能正在尋找一些重構。 – John

+1

如果我確實需要**,我會打電話給Comeau並詢問一個定製的交叉編譯器。 – MSalters

回答

4

當Turbo C++ 3.0幾年前是最先進的技術時,今天很多C++的東西都不存在。沒有STL,沒有<list>,沒有命名空間,甚至沒有類型bool(通常由宏'BOOL'模擬)。當我沒有記錯的時候,它只是一個16位的編譯器,與int和指針arithmetik相比,給了你更多的「樂趣」。

快樂移植;-)

+0

同意。你不可能得到這個「只是工作」。自Turbo以來,所有進入C++的東西都只能自己編寫。 – Feasoron

+4

在C++ 11的時代,turbo C++不配稱爲「C++編譯器」 – PlasmaHH

+0

雖然它可能有'list.h',但這不會有多大幫助。 – user786653

0

你可以嘗試這些醜陋的黑客:

/* Check if the compiler is Borland Turbo C++ 3.0 or earlier */ 
#ifdef __BORLANDC__ 
#if (__BORLANDC__ <= 0x400) 

#include <list.h> 

typedef int bool; 
#define true (1) 
#define false (0) 

#else 

#include <list> 

#endif 

等,而是可以考慮使用一個較新的編譯器,如GCC或MSVC。

0

如果你真的需要在DOS下運行你的應用程序,並且機器至少是80386,我會建議使用DJGPP。它提供了最近的GCC。然後,您的應用程序將以x86保護模式運行。

0

如果您需要爲DOS構建程序,您可以嘗試使用Borland C++ 5.02。 它是支持DOS的最後一個Borland編譯器,並且包含了一些標準STL。

這樣的代碼:

#include <list> 

using namespace std; 

typedef list<int> itemist; 

應該編譯它。