C 的可移植性和跨平台開發 1 編譯器

2021-08-23 12:56:20 字數 757 閱讀 5694

在跨平台的開發過程中,很多問題都和編譯器有關。因此我們先來聊聊編譯器相關的問題。

編譯器的選擇

首先,gcc是優先要考慮支援的,因為幾乎所有作業系統平台都有gcc可用。它基本上成了乙個通用的編譯器了。如果你的**在a平台的gcc能夠編譯通過,之後拿到b平台用類似版本的gcc編譯,一般也不會有太大問題。因此gcc是肯定要考慮支援的。

其次,要考慮是否支援本地編譯器。所謂本地編譯器就是作業系統廠商自產的編譯器。例如相對於windows的本地編譯器就是visual c++。相對於solaris的本地編譯器就是sun的cc。如果你對效能比較敏感或者想用到某些本地編譯器的高階功能,可能就得考慮在支援gcc的同時也支援本地編譯器。

編譯警告

編譯器是程式設計師的朋友,很多潛在的問題(包括可移植性),編譯器都是可以發現並給出警告的,如果你平時注意這些警告資訊,可以減少很多麻煩。因此我強烈建議:1把編譯器的警告級別調高;2不要輕易忽略編譯器的警告資訊。

交叉編譯器

交叉編譯器的定義參見「維基百科」。 通俗地說,就是在a平台上編譯出執行在b平台上的二進位制程式。假設你要開發的應用是執行在solaris上,但是你手頭沒有能夠執行solaris的sparc機器,這時候交叉編譯器就可以派上用場了。一般情況下都使用gcc來製作乙個交叉編譯器,限於篇幅,這裡就不深入聊了。有興趣的同學可以參見「這裡」。

關於編譯器的話題,暫時聊到這,後面聊聊關於「語法」的問題。

C 的可移植性和跨平台開發 0 概述

今天聊聊c 的可移植性問題。如果你平時使用c 進行開發,並且你對c 的可移植性問題不是非常清楚,那麼我建議你看看這個系列。即使你目前沒有跨平台開發的需要,了解可移植性方面的知識對你還是很有幫助的。c 的可移植性這個話題很大,包括了編譯器 作業系統 硬體體系等很多方面,每乙個方面都有很多內容。鑑於本人...

C 的可移植性和跨平台開發 2 語法

目前還有相當一部分開發人員在使用老式編譯器幹活,這些老式編譯器可能對c 98支援不夠。因此,當你的 移植到這些老式的編譯器上時,可能會碰到一些稀奇古怪的問題 包括編譯出錯和執行時錯誤 下面這些注意事項有助於你繞過這些問題。強調一下,後面提到的好幾個條款都是通過迴避c 的新語法來保證移植性。如果你用的...

C 的可移植性和跨平台開發 2 語法

目前還有相當一部分開發人員在使用老式編譯器幹活,這些老式編譯器可能對c 98支援不夠。因此,當你的 移植到這些老式的編譯器上時,可能會碰到一些稀奇古怪的問題 包括編譯出錯和執行時錯誤 下面這些注意事項有助於你繞過這些問題。強調一下,後面提到的好幾個條款都是通過迴避c 的新語法來保證移植性。如果你用的...