作者henry8168 (z0 gj3c.6)
看板C_and_CPP
標題[問題] C 語言下有類似 Template 的功能嗎?
時間Wed May 24 10:03:39 2017
如題。Template 是 C++ Library 才有的工具。
如果要讓 C 語言的程式碼簡單一點,有什麼好招能用嗎?
目前在編寫 Linux driver ,只能用 C 。
板上 / 過 template 了。
希望大家提供協助,謝謝。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.120.179.172
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1495591422.A.F60.html
1F:→ loveflames: 如果你是要產生大量類似的code,有 05/24 10:05
2F:→ loveflames: preprocessor可以做這種事 05/24 10:05
3F:→ loveflames: gcc可以用boost.preprocessor 05/24 10:16
4F:推 Qbsuran: typeof __typeof__ 05/24 12:36
5F:→ loveflames: 原po還是說清楚一點想怎麼精簡,這樣比較好確認方式 05/24 13:32
int get_[obj_s member](struct obj_s *self){
int err_code = checkByMode(self,
&_common_update_attr_[obj_s member],
"common_get_[obj_s member]");
if (err_code < 0){
return err_code;
}
return (int)self->[obj_s member];
}
如上。我只是想對 struct obj_s 中不同的 member 執行 get 的動作,
程式碼中除了 [obj_s member] 是根據不同的 member 而變化。
其他的部分完全一模一樣。
但我的前輩為每一種 member 都寫了一個 function ,導致 code 顯得冗贅。
請問我需要怎麼精簡?
由於 members 的 type 分別有 uint8_t、int、char*...等等,
所以原本想到能不能用類似 C++ 的 template 完成?我需要在 C 語言上達成。
※ 編輯: henry8168 (59.120.179.172), 05/24/2017 13:54:40
6F:→ loveflames: 這簡單,不過我要回想一下,太久沒寫 05/24 14:13
8F:推 HolyBugTw: 推樓上這份code 05/25 14:38