天天看點

UNIX/LINIUX編譯器相關

标準

UNIX程式設計環境和C程式設計語言标準化.标準化有多種,例如ISO C制定的.

UNIX标準不同,同它相關的或者能夠支援的标準C庫也不完全相同.例如關鍵字,頭檔案(及其相關的功能),系統接口/頭檔案及定義,實用程式等等,有些标準有,有些沒有.

UNIX标準有多種,實作也有多種.

ISO C的頭檔案依賴于OS所配置的C編譯器版本.

ISO C定義的限制都是編譯時限制.檔案<limits.h>定義了C的限制,例如長整型最大值等等.<stdio.h>定義了TMP_MAX,這是臨時檔案名的最長長度.

POSIX也定義了不少限制,這些大多同OS實作有關.例如登入名的最大長度,指向一個檔案的連接配接數等等,這些限制同樣可以在<limits.h>中找到.

其它标準也有類似的限制.通過pathconf/sysconf/fpathconf函數可以得到某種限制.

如果編寫可移植性應用程式,那麼應用程式應該能夠滿足不同平台的要求,在編譯時刻需要支援同平台相關的選項,其實也就是不同标準/平台定義的功能測試宏(feature test macro).

例如,如果在編譯一個程式時,希望它隻是用POSIX的定義而不使用任何實作定義的限制,就需要定義_POSIX_C_SOURCE.所有POSIX頭檔案都定義此宏,就能排除其它的定義.

_POSIX_C_SOURCE,_XOPEN_SOURCE,__STDC__(ISO C的)都是feature test macro.

本文轉自jetyi51CTO部落格,原文連結: http://blog.51cto.com/jetyi/819189,如需轉載請自行聯系原作者

繼續閱讀