看板Soft_Job
各位好:
小弟目前接一個小型專案
要寫嵌入式板子 (Cortex M0+) C 語言程式
連接 RS232 GPS 模組
其中工作包含:
* GPS message decode (純邏輯)
* RS232 Setting 等等控制雜項 (平台相關)
基本上 GPS 模組都是先在 Windows PC 先測過
沒問題再丟到 ARM 上面去跑
code 都是分開寫
然後在 copy & paste 過去另一邊的 project
其實80% 程式碼都一樣
只差在
Windows PC 要呼叫 RS232 的 library
ARM 那邊要設 I/O Pin
想做好一點的開發管理
預計用 git 做版本控制
主目錄下切三個資料夾:
gps_module (純變數宣告、判斷邏輯)
win_pc (PC的程式碼)
arm (板子的程式碼)
然後 gps_module.c 設置
#ifdef WIN_PC
void gps_update_buffer(...){
// call windows library
}
#ifdef ARM
void gps_update_buffer(...){
// call ARM API
}
讓不同平台的 project 跑不同的函式
這樣改 code 應該比較方便
不用再 copy & paste 很難 maintain
請問這樣的管理方式是OK的嗎 ?
或是有其他更好的建議 ?
感激不盡
--
※ 批踢踢實業坊(ptt.cc), 來自: 61.231.55.55※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1432051541.A.2FE.html
推 givemepass: 共同的部份拉出來, 其他的開分支, 有動到共同的再合 05/20 02:07
→ givemepass: 併回去就好 05/20 02:07
推 uid88: 既然gps_modules.c要放common code,就應該拿掉#ifdef,讓 05/20 05:16
→ uid88: 這裡的code在Windows和ARM都可以build.平台的差異由WIN_PC 05/20 05:16
→ uid88: 和ARM裡的程式吸收. 05/20 05:17
→ uid88: 另外1.用#if比#ifdef好 2.用#elseif比另一個#if/#ifdef好 05/20 05:17
推 askacis: 可以從makefile去切,xxx-win.c 05/20 13:04
→ askacis: xxx-arm.c 05/20 13:04
→ askacis: 才不會code裡出現滿天的ifdef 05/20 13:05
→ askacis: 跑win32的時候就去編與連結xxx-win. 05/20 13:06