免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 三月廿七
打印 上一主题 下一主题

问两个高级问题, [复制链接]

论坛徽章:
5
狮子座
日期:2013-08-20 10:12:24午马
日期:2013-11-23 18:04:102015年辞旧岁徽章
日期:2015-03-03 16:54:152015亚冠之德黑兰石油
日期:2015-06-29 18:11:1115-16赛季CBA联赛之新疆
日期:2024-02-21 10:00:53
61 [报告]
发表于 2011-10-12 22:09 |只看该作者
库和工程不是一个概念,  我佩服你的高深,
分目录次要目的是为了单元测试, 主要的目的是把一些逻辑相 ...
三月廿七 发表于 2011-10-12 20:25



    对啊!可是,C语言有继承么?你还是用C++的方式去想问题。C语言没有继承,但是还有一种东西:依赖。

一般C库是这么设计的:先设计最基础最基础的东西,比如算法或者某些底层HAL,然后把它们做一个完整的包发布,有自己的test和makefile,就比如cairo的pixman,然后在这个基础上,做新的东西,以此类推。从这个角度上说,C的依赖关系是单向的,也就不存在“子目录”这种事儿了,大家都是平行的,充其量编译的顺序不一样而已。

既然没有子目录,放到一起又有什么问题呢?看过了那么多纯C项目,我还真没发现哪个项目的.c文件是分目录存放的。我真没看到过那种项目。

论坛徽章:
0
62 [报告]
发表于 2011-10-12 22:27 |只看该作者
本帖最后由 三月廿七 于 2011-10-12 23:21 编辑

我说的是分文件夹,  和分目录也没什么区别, 不知道有没有你说的有没误差...
我知道 c 语言没有"继承", 但是有结构体嵌套... "相互嵌套的结构体", 这样说行吗,
你不觉得说 "嵌套的结构体" 太麻烦了吗?

"既然没有子目录...",  
你不去分他当然不会有子目录,
假设有一个游戏,划分为界面、逻辑、脚本、角色、地图、声音、按键、网络...
, 我觉得分为子目录没什么不可以吧。

我没说不平行, 我是说 多个相关的.c文件可以放在一个文件夹
比如界面, 我见过的 lua就是全部放在 interface文件夹里, 脚本全部放在 script文件夹里,
你很难用一个.c 文件处理复杂的界面逻辑 或者是 脚本,
然后你需要切分成10个.c文件, 你觉得全部放在一个文件夹很优雅吗, 我怎么一点也看不出来??
如果不是 IDE按文件名排序, 估计都找不到东南西北...


你见过的事物不代表是正确的, 你没见过的事物不代表不存在, 存在也不太表不正确,


请看看8楼的回复:

"我认为较科学的一种管理方案是:
project A
     |----include
     |----src
     -----lib
src 下可以再搞一些子目录,以便分模块存放源文件;编译生成的库则统一存放在lib目录。"

我比较赞同这个方案

论坛徽章:
0
63 [报告]
发表于 2011-10-13 07:57 |只看该作者
其实好像你只需要找一个开源的C写的Game看下人家目录怎么分的,不就全解决了么?

至于这么龌龊么?

论坛徽章:
0
64 [报告]
发表于 2011-10-13 08:08 |只看该作者
本帖最后由 三月廿七 于 2011-10-13 08:53 编辑
其实好像你只需要找一个开源的C写的Game看下人家目录怎么分的,不就全解决了么?

至于这么龌龊么?
zcheung 发表于 2011-10-13 07:57

首先, 谢谢你的建议...

自己龌龊惯了吧, 用这么恶心的词, 开源项目是不是专门给你用来得瑟的??
知道什么叫论坛吗?
8楼说的合理我就用, 需要看什么开源项目吗?
还有, 我看过好几个垃圾的c代码, 很不满意, 你看过几个开源项目??
你如果牛B, 就拿你自己的工程目录我学学, 要不然就一边牛B去...

论坛徽章:
0
65 [报告]
发表于 2011-10-13 09:14 |只看该作者
本帖最后由 zcheung 于 2011-10-13 09:16 编辑
首先, 谢谢你的建议...

自己龌龊惯了吧, 用这么恶心的词, 开源项目是不是专门给你用来得瑟的??
...
三月廿七 发表于 2011-10-13 08:08 AM



    尔确实为智无敌之辈 ,不敢与尔争论。


另: 智无敌出自鄙人之手  原为

傻 13 智无敌
女表 子贞犹在
两者与之和
安能与其分胜负


尔实在可惜阿,因为尔不能成为两者与之和的产物,不然尔前途无量也~

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
66 [报告]
发表于 2011-10-13 09:59 |只看该作者
回复 59# 三月廿七

那就不纠结那些术语了。

qsort vs sort。qsort可以将排序与类型分离,qsort中只包含排序部分。
但是:
1. 对需要排序的类型,总得去写一个比较函数
2. 比较函数没有被inline的机会

其实我觉得1到不是特别严重的问题,C++也只是对int这种类型可以不用写比较函数而已。

真正的问题是2。
不仅仅是指qosrt比sort损失的那点效率。
更重要的是qsort的这种抽象方式是用效率损失的代价换来的 —— 所以不会大规模的使用。
不失效率地提供抽象机制 —— C++真是说到做到了的。

qsort的比较是类型无关的,但访问元素的方式与容器有关 —— qsort只能对array/vector排序,deque就不行了。

要实现一个只与排序算法有关的qsort代价就太大了,得搞个类似
struct iterator {
  virtual void next();
  virtual void* get();
...
什么的出来。
基本上就不会有人这么干了。

论坛徽章:
0
67 [报告]
发表于 2011-10-13 10:01 |只看该作者
又想学C++的重载 又看不起C++ 那你模仿个球

论坛徽章:
0
68 [报告]
发表于 2011-10-13 10:25 |只看该作者
本帖最后由 三月廿七 于 2011-10-13 10:32 编辑
尔确实为智无敌之辈 ,不敢与尔争论。


另: 智无敌出自鄙人之手  原为

傻 13 智无敌
女 ...
zcheung 发表于 2011-10-13 09:14

看开源项目学的吧, 你还没这个智商写这首诗
肯定没有你前途无量, 你直接就是这两种的产物, 本人忘尘莫及...

论坛徽章:
0
69 [报告]
发表于 2011-10-13 12:06 |只看该作者
看开源项目学的吧, 你还没这个智商写这首诗
肯定没有你前途无量, 你直接就是这两种的产物, 本人忘尘莫 ...
三月廿七 发表于 2011-10-13 10:25 AM



智无敌之辈 请继续尽情的Show, 让我等智力低下之辈 看看你的智无敌之处~   


Go on。。。

论坛徽章:
0
70 [报告]
发表于 2011-10-13 12:07 |只看该作者
看开源项目学的吧, 你还没这个智商写这首诗
肯定没有你前途无量, 你直接就是这两种的产物, 本人忘尘莫 ...
三月廿七 发表于 2011-10-13 10:25 AM



    顺便说声  尔予我很多快乐~~  Thanks。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP