我正在編寫一個應該在各種SoCs(例如:Xilinx Zync,Freescale QorIQ)上運行的操作系統。 我的問題是,並非所有提供的IDE(由賽靈思,飛思卡爾等提供)都提供相同的庫(標準C & POSIX庫)。例如,CodeWarrior IDE具有timespec結構,而Xilinx則不具有這種結構。 此外,sleep
在一些提供的庫中實現,但我有我自己的實現。我想讓我的代碼獨立於編譯器(某些製造商提供多個IDE和不同的編譯器)。C代碼的編譯器依賴性太大
有什麼建議嗎?
我正在編寫一個應該在各種SoCs(例如:Xilinx Zync,Freescale QorIQ)上運行的操作系統。 我的問題是,並非所有提供的IDE(由賽靈思,飛思卡爾等提供)都提供相同的庫(標準C & POSIX庫)。例如,CodeWarrior IDE具有timespec結構,而Xilinx則不具有這種結構。 此外,sleep
在一些提供的庫中實現,但我有我自己的實現。我想讓我的代碼獨立於編譯器(某些製造商提供多個IDE和不同的編譯器)。C代碼的編譯器依賴性太大
有什麼建議嗎?
我的建議:代碼爲POSIX標準。如果供應商庫不符合POSIX標準,請自行實施POSIX層。
離開核心操作系統一般#ifdef
- 免費,並把混亂在條件編譯兼容層。
當所有其他都失敗時,'#ifdef'是你的朋友。 – Mysticial
如果你發現這個問題的一個很好的解決方案,你將會贏得諾貝爾獎。 –
如果你在理論上甚至沒有POSIX,你應該堅持C標準的要求;在實踐中,這是不夠的(例如,標準中沒有「睡眠」),或者如果您在嵌入式系統上工作,甚至可能無法完全實現。用#ifdef's玩得開心。 –