2010-08-23 56 views
0

我已經經歷了許多有關簽署/無符號字符的問題。我明白在C++中有三種不同的字符類型。目前,我有一個用Visual Studio編譯的大型代碼庫 - 「默認字符無符號」設置設置爲「否」。現在我應該爲我們的代碼庫添加一個特定的項目(將它集成爲我們當前工具集的一部分)。這個項目帶有一個文檔,強烈強調它需要默認字符無符號。移植代碼需要默認字符無符號到沒有這個要求的代碼庫

現在我開始想知道:爲什麼作者使用「char」而不是「unsigned char」,如果他需要字符無符號?如果我更改我們的代碼庫以將「默認無符號字符」設置設置爲「是」,會出現什麼問題?如果我將整個項目中的所有「字符」更改爲無符號字符,我應該添加到我們的代碼庫中,會出現什麼問題?

其實我也許應該問是「我怎麼到這個項目加入到我們的代碼庫不破壞任何東西」,但會要求一個解決方案,我也不會學到任何東西;)

回答

3

庵, 哇靠。你能告訴我們這個代碼來自哪裏,所以我們可以避免它? :)

我的第一個直覺是將代碼構建爲一個單獨的庫,以便與您現有的項目鏈接,並且在與它進行交互時要小心。不知道代碼的確切性質,我不知道這是否可行。

如果你把代碼中的真正承擔char是無符號的,你應該 OK簡單地改變它,使之明確unsigned char,但加註你是否要去不得不在合併的問題以後版本的新版本,所以我仍然更喜歡庫解決方案。

+0

+1思考即將發佈的版本 - 時間軸很容易被忽略... – davka 2010-08-23 08:00:02

+0

我打算進行第二種選擇,因爲項目將被更新 - 但作爲我們當前代碼庫的一部分,所以任何更改制作將保留爲未來的版本。感謝您的回答! – PeterK 2010-08-23 08:44:25