作者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/cn.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