- 论坛徽章:
- 2
|
回复 3727# 蔡万钊
我也不清楚是否准确理解了村夫的要求。所以下面就当是我自己的要求好了:
1. 链接目标(so/out/dll/exe...)由p.c, q.c, r.c, ...构成。
2. p.c, q.c, r.c, ...里有各种的私有函数(仅仅在该.c文件内使用的) —— 这里是很习俗的做法。
我记得村夫原始需求里那些函数只在某一个translation unit里用,不存在跨translation unit。否则我都会倾向控制导出符号以避免那些函数体重复了。
村夫的原始需求里只是没有提多个translation unit,以及下面的:
3. 这些私有函数都(应该)是static linkage,以避免潜在的整个链接目标出现重复的可能性 —— 这也还是很习俗的做法。
根本就没有DEF/visibility出场的机会。
然后与村夫类似的问题出现了: p.c, q.c, r.c中的某些文件过长,浏览不方便。并且假设无法重构。
依然有不违法习俗的方法:折腾编辑器。 搜索啊、折叠啊、书签啊什么的。
为了避免折腾编辑器, 可以利用C语言提供了一种就地展开其他文件内容的标准机制: include。
用include将那些static拆分到p1.ext, p2.ext, ... 然后用 p.c包含它们。
进一步,关于扩展名ext的选择。 .c是一种打破习俗 —— .c被认为是单独的translation unit —— 但可以避免折腾编辑器的做法。 |
|