我打算使用Cygwin套件在Netbeans上編寫Windows上的ANSI-C程序,稍後我想編譯UNIX系列操作系統上的源代碼並使用程序。我應該擔心任何種類的可塑性問題嗎?C在Windows上編寫在UNIX上編譯和副版本
0
A
回答
1
如果僅使用在C標準中所描述的功能性,所述一組可能的不相容的通常減少到:
符號性的char
- 尺寸所有類型的(例如
int
=long
= 32在Windows中,不一定是在UNIX上),我的意思是全部,包括指針和enums
- 糟糕的想法類型轉換和強制轉換,尤其是涉及指針和nega略去的值(在表達式中符號和無符號類型的混合是容易出錯的太)的類型
- 對準和它們的結構中的填充/工會
- 端序位域的
- 順序
- 實現定義/特定的行爲,例如當分割有符號值時,負值的右移,舍入和符號
- 浮點:不同的實現和不同的優化
- 未指定的行爲,例如,函數參數和子表達式評估的順序,
memcpy()
複製數據的方向(從低到高地址或其他方式)等等 - 未定義的行爲,例如,
i+i++
或a[i]=i++
,修改字符串常量,指針引用時,它的指向對象是不見了(例如free()'d
),不使用或濫用const
和volatile
,等等等等 - 供給與不適當的參數導致未定義的行爲,例如標準庫函數調用
printf()
樣功能與錯誤數或種參數 - 非ASCII字符/字符串
- 文件名格式(特殊字符,長度,區分大小寫)
- 時鐘/時間/區域設置格式/範圍/值/配置
還有更多。實際上,你必須閱讀的標準,並注意什麼保證正常工作的,什麼不是,如果有任何條件。
如果您使用的東西C標準外,該功能可能無法在不同的平臺上可用的或相同的。
所以,是的,這是可能的,但你必須要小心。這通常是你做出的假設,使得你的代碼很難移植。
1
相關問題
- 1. 在windows和linux上編譯
- 2. 在Unix上爲OpenVMS編譯
- 3. 在Windows XP或Windows 7上編譯C--
- 4. 寫在Windows上,編譯於MAC
- 5. Teradata FastLoad Windows或Unix上的Inmod編譯
- 6. 在Android上編譯Android版
- 7. 在WINDOWS上編譯Unix終端上的Java程序
- 8. 無法在Windows 7上編譯C x64
- 9. 在Windows上編譯NodeJS C++模塊?
- 10. 在Mac上編譯Objective-C for Windows?
- 11. ofxEtherdream在Windows上編譯
- 12. 在windows上編譯libupnp
- 13. 在Windows上FFT庫編譯
- 14. 在Windows XP上編譯Boost
- 15. 在Windows上編譯libyaml
- 16. 在windows上編譯perl
- 17. 在Windows上編譯GMP庫
- 18. 在windows上編譯OpenSSL 1.0.1
- 19. 在windows上編譯libssh2
- 20. 在Windows上編譯PHP 7
- 21. 在windows上編譯dbd:sybase
- 22. timespec在Windows編譯器上
- 23. 在Windows上交叉編譯?
- 24. 在Windows上編譯Qt Creator
- 25. 在Windows上編譯Apache APR
- 26. 在Windows 7上編譯FAPWS3?
- 27. 在Windows上編譯Scala^Z3
- 28. 在windows上編譯superopt
- 29. 在Windows上編譯Apache
- 30. C#編譯版本
行終止,請確保您爲每個系統/編譯器使用正確的格式。 – TheZ
您能否詳細解釋一下? – ferit
UNIX系統用'\ n'終止文本文件行,而Windows則支持'\ r \ n'行終止。您可能需要在兩者之間進行轉換,或者找到一個選項來切換Netbeans中的默認類型。可能是一種稱爲換行符或行終止的選項。 – TheZ