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

編譯器兼容性常見問題

發布時間: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語言代碼運行不出現象可能有很多原因,以下是一些常見的原因和解決方法:

閱讀全文

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

熱點內容
張勤編譯青鳥 瀏覽:989
演出app哪個好 瀏覽:864
鳳凰app推廣開戶哪個好 瀏覽:823
租伺服器要關注什麼 瀏覽:215
shell命令vi 瀏覽:673
javaem演算法 瀏覽:588
閃送app哪裡下載 瀏覽:654
java語言編譯器詞法分析 瀏覽:379
22歲程序員圖片大全 瀏覽:954
ibm如何查看伺服器raid 瀏覽:678
程序員那麼可愛葉子是誰 瀏覽:716
gcc82編譯器入口地址 瀏覽:693
上架一個伺服器要做什麼 瀏覽:854
創立文件夾命令 瀏覽:252
單片機移位寄存器 瀏覽:6
java程序設計及實訓教程 瀏覽:335
redis有序集合演算法 瀏覽:778
java獲取最大值 瀏覽:74
linux硬體配置命令 瀏覽:948
java6webservice 瀏覽:450