導航:首頁 > 源碼編譯 > 編譯器兼容性常見問題

編譯器兼容性常見問題

發布時間:2023-08-26 01:27:10

㈠ gcc與diab編譯器的兼容性問題

不好意思剛看到,不同編譯器編譯的結果不能鏈接到一起,理由主要有以下兩方面:一是不同編譯器可能對變數名做不同處理,主要針對c++,好像沒有什麼編譯器對c語言的變數名改變,舉個例子,假設c++中的變數test_var,用兩種不同編譯器編譯完該結果可能是Diab_test_var和GCC_test_var成為不同的變數,那麼對於連接器來說就是不同的變數怎麼會鏈接到一起是吧。c好像不存在文件名問題,但是c會遇到第二個方面。第二個方面就是不同的編譯器會提供一些內部函數比如*(乘以)這個操作在編譯器里有定義,有具體的代碼來實現,如果編譯器不同實現的函數名不同,不會鏈接到一起。當然還有更復雜的原因,可能我也不太了解。這些是我的理解,可能不全,但是可以肯定的是,不同編譯器編譯的二進制文件不能鏈接到一起使用。
至於你說的BSP是風河提供的會不會不兼容的問題,是這樣的。通常對於BSP中的c語言部分,無所謂兼不兼容,因為c語言要是ANSI標準的話所有的編譯器都會支持。BSP中的匯編部分跟編譯器相關,但也是格式上的問題。一般vxworks提供gcc版的bsp(提供不提供其他編譯器的BSP我不清楚,因為我們用的是gcc),所以應該是兼容的。假如真的不提供,可以按照gcc匯編語法,把BSP中的函數和變數以及偽指令部分更改成符合GCC語法即可,整體的匯編不需要更改,這部分工作很小的應該不難。
我知道的就這些,希望能幫到你。

㈡ FORTRAN編程兼容問題。我的編譯器是Visual Studio 2013, Fortran為Intel Visual Fortran XE2013,

編譯器不兼容,如gfortran或f95編譯器裡面,讀寫二進制文件是open語句中的(form='unformatted',access='direct',recl=m*n)
在visual fortran裡面會出現問題,將三個選項合並為(form='binary')即可通過。

具體在哪裡出現問題,編譯器會提示的

㈢ 不同的c語言編譯系統差別在哪裡代碼是否 存在兼容性的問題

ANSI
C
一般都可以支持,但也涉及到不同版本的C標準的兼容性問題,比如VC6不支持C99,VS2003,2005,2008,20120等就可以部分支持C99標准;而且很多標准並沒有規定實現,不同的編譯器實現可能不同,比如C標准只規定了short<=int<=long,但並沒有規定位元組數,導致不同的編譯器數據類型的大小各不相同。

ANSI
C標準的話,不同的編譯器一般都有不同的實現,需要分別實現。
在移植到不同編譯器的時候這些都要注意處理,比較常規的做法是數據類型和函數等自己根據不同編譯器封裝成一個統一的格式,在程序中使用封裝後的數據類型或函數,而不要使用原生類型,這樣在移植時只需要在封裝的地方根據編譯器的不同進行修改就可以了,不需要再修改源代碼。

㈣ C語言代碼運行不出為什麼

C語言代碼運行不出現象可能有很多原因,以下是一些常見的原因和解決方法:

閱讀全文

與編譯器兼容性常見問題相關的資料

熱點內容
centos命令窗口 瀏覽:596
編譯器有幾個好用的 瀏覽:500
資料庫和網站如何搭載伺服器 瀏覽:154
網路流理論演算法與應用 瀏覽:795
java和matlab 瀏覽:388
釘釘蘋果怎麼下app軟體 瀏覽:832
php網站驗證碼不顯示 瀏覽:859
鋁膜構造柱要設置加密區嗎 瀏覽:344
考駕照怎麼找伺服器 瀏覽:884
阿里雲伺服器如何更換地區 瀏覽:972
手機app調音器怎麼調古箏 瀏覽:503
銳起無盤系統在伺服器上需要設置什麼嗎 瀏覽:19
紅旗計程車app怎麼應聘 瀏覽:978
如何編寫linux程序 瀏覽:870
吉利車解壓 瀏覽:248
java輸入流字元串 瀏覽:341
安卓軟體沒網怎麼回事 瀏覽:785
dvd壓縮碟怎麼導出電腦 瀏覽:275
冒險島什麼伺服器好玩 瀏覽:543
如何在伺服器上做性能測試 瀏覽:794