翻譯|使用教程|編輯:胡欣星|2025-01-07 16:19:59.587|閱讀 88 次
概述:C++Builder 12.2版本此次進行升級時,針對技術選擇做出了一些決策,其中涉及到運行時庫(RTL)的使用。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
處理舊版RTL是一個非常有用的技巧,適用于升級到 C++Builder / RAD Studio 12.2 的新 Windows 64 位現代 C++ 工具鏈的開發人員。處理遺留代碼,尤其是依賴于非標準或已廢棄方法的代碼,通常是現代化項目的一個挑戰,因此 C++Builder 團隊提供了如何解決這一問題的指導,常有幫助。
C++Builder 12.2版本此次進行升級時,針對技術選擇做出了一些決策,其中涉及到運行時庫(RTL)的使用。RTL 是提供大多數其他代碼基礎功能的代碼庫,它有兩個版本:C RTL 提供標準的 C 函數(比如printf),而 C++ RTL 提供 C++ 異常處理等功能。
(除了這兩個 RTL 外,還會有 STL(標準模板庫),它是容器和算法的標準庫,以及你自己的代碼,它們都依賴于 RTL 提供的功能。你可以將 RTL 看作是應用程序所依賴的基礎代碼,雖然它常常被忽視。)
舊版工具鏈使用的是自定義的 RTL,那么是續使用這些 RTL,還是使用新的 RTL?
但關鍵在于:舊的 C 和 C++ RTL 都繼承自早期 Turbo C 和 Turbo C++ 產品(上世紀八九十年代的工具)。雖然這些 RTL 經歷了大量的重構,但官方并沒有刪除舊有的類型和方法。而在那個時代,C++ 還沒有標準化,官方使用了許多非標準的類型和方法(當時 C++ 還不存在標準)。這些非標準的方法在新的 RTL 中并沒有出現。因此,如果你有非常老舊的代碼庫,可能會用到這些方法。
小編并不清楚有多少代碼仍然在使用這些上世紀八九十年代的非標準方法。你可能也不清楚,因為直到現在,重新編譯這些代碼通常不會報錯,你可能從未注意到這些方法存在。
幸運的是,在實際使用中,看到遇到這種問題的情況非常少。最常見的缺失方法已經有三位開發者報告過,而且這些問題對于他們來說都很容易修復。在這么多 C++ 開發者中,只有這幾個人遇到過這個問題!但如果你有老舊代碼庫,且擔心這個問題,接下來就是你可能遇到的情況以及解決方案。
你切換到新平臺后,重新編譯代碼。然后,你會看到編譯錯誤,提示某個方法找不到。
你可能會想:“奇怪,這個方法以前是可以用的。” 然后你可能會回退到舊版工具鏈(它們并排安裝,可以方便地進行切換),驗證一下:“嗯,確實能正常工作。”
這時,你可能會通過 Google 查找類似的錯誤信息,發現搜索結果中找到了一個類似但不完全相同的解決方案:
比如,你搜索'c++ randomize',然后找到的結果是'std::rand'。這其實就是一個提示:你正在使用的是 C++ 標準化之前的非標準方法。
幸運的是,日常所遇到的每個案例都很容易修復。這些方法的存在是因為當時 C++ 還沒有標準化,但現在 C++ 標準庫提供了這些方法的標準版本。
大部分代碼在升級過程中已經去除了這些舊方法,或者開發人員發現這些替換方法非常簡單。
官方也在考慮制作一個“適配庫”,幫助那些需要與舊版 RTL 兼容的開發者,但由于目前反饋數量較少,還不確定這個功能是否有必要。
這個工具鏈升級提供了一個現代、符合標準的開發環境,但使用舊版代碼庫并依賴于遺留 RTL 調用的開發者,可能會遇到這些問題。幸運的是,大多數問題都可以通過簡單的代碼替換來解決,而 C++Builder 團隊也愿意提供支持,幫助你順利過渡到新的工具鏈。
關于如何解決在遷移到新工具鏈時可能遇到的 RTL 兼容性問題,如果你有任何疑問或需要進一步的幫助,請聯系在線客服~
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn