哈,看到这样的注释,我可以理解开源代码为什么越来越大了。。

中山野鬼 发布于 2014/08/07 21:58
阅读 1K+
收藏 2
GCC
#  if defined _MSC_VER  && !defined WIN32
/* Microsoft C 16-bit versions limit malloc to approx 65512 bytes.
   The REALLOC define eliminates a flurry of conversion warnings,
   but is not required. */
#   define MAX_BUF_SIZE  65500L
#   define REALLOC(p,s) realloc ((p), (size_t) (s))
#  else
#   define MAX_BUF_SIZE (1L << 16)
#   define REALLOC(p,s) realloc ((p), (s))
#  endif

这段代码实际来源是gcc-4.7.3源码整包里的。真心佩服,现在还支持 16位版本。。。。。哈。其他废代码也不少。。8000多行的代码,累了一天,总算给我去掉3000多行,其实功能都没剪,只是把不支持x86的,比如其他小型机的(多少年前的历史)去掉。。。

GNU的伟大不在于开源,而在于什么都想支持。。。。哈。弱弱问一句,“不累吗?”当然可能被反喷,“关你屁事!”。。。

哈,补充说一句,不介意有网友说我知识面狭隘。以我狭隘的知识面,我把这个喷点对应的讨论点展开一下,开源代码是否需要针对已经废弃的环境(硬件、操作系统、编译器)进行支持。一个简单道理,16位的 微软c的编译器,我查的是 vc 1.5 版本,应该支持 win 3.x ,win 4后都是32位。现在的代码是否应该支持?妈蛋,我现在想找 vc 1.5版本的文档都找不到。特别是围绕32位环境下所构建的逻辑,别的坑我不知道,但就 sizeof(int) == 16 或 32,对很多算法逻辑都会有影响,以前这种坑,出现过,也跌过,简单举例 

int i;

#define MAX_BUF_SIZE  65500L

for (i = 0; i < MAX_BUF_SIZE ; i++) {

     if .....

}

上面的逻辑,针对 32位不会错,针对16位,就是个死循环。

拜托这里的网友,你喜欢对我个人做人身攻击的喷,就直接针对我,不用挂着技术的外衣,来喷。。。先搞清楚我喷点后面的讨论点。

还是强调一点,我从来不介意别人说我水平不行。哈。客户认可就行。

加载中
8
redraiment
redraiment

“以偏概全”,GCC不代表所有开源软件。

GCC做到兼容你又嫌它大,如果不兼容你又要吐槽“哈,GCC居然连XX平台都不支持”。

顺便说一句:你要是真的裁剪了GCC的代码,不要忘了以GPL协议发布你修改后的代码。我不认为GNU的伟大是你说的神码都支持,而是你修改后还需要继续以GPL协议发布,这样其他和你有相同需求的人就能直接利用你的劳动成果,节省时间。

顺其自然001
顺其自然001
不得不顶一下。。
0
kslr
kslr
兼容呗 。。。 每次深夜都被我看到,我觉得你应该请客
明月惊鹊
明月惊鹊
你对鬼哥的基情终于敢表露啦。。。。
0
bastetwang
bastetwang
咦,你怎么在用开源的“垃圾”东西了?你不是自己喷过无数次开源的东西了吗?能再无耻一点吗。
bastetwang
bastetwang
回复 @中山野鬼 : 我下面说的问题你也根本没法不敢回答吧。只能玩这种转移话题的老把戏。 反正我没事做看你喷,我也会来喷的。反正你也喷粪喷惯了,被大家惯坏了。觉得大家都会给你面子,就自己不要脸了。
bastetwang
bastetwang
回复 @中山野鬼 : 你得先证明他不好啊,你这个完全没有说服力啊。 那我也可以随意骂你了,因为你不好啊,我也不用证明你不好。 这种不要脸没意思的话也只有你说得出口。
中山野鬼
中山野鬼
回复 @bastetwang : 哈哈,你用一个产品的时候,就不能允许说它的不好?太法西斯了吧。喷产品不好的话题都了去了,无论是否是开源社区。我爱喷是我的事情,你看不顺眼是的事情。哈。我继续喷,你继续看不顺吧。忙了,不和继续你水了,哈。。。
bastetwang
bastetwang
回复 @bastetwang : 我说得没错吧,你逻辑本身就混乱,又喜欢偷换概念,玩弄文字游戏,你还要不要脸啊。
bastetwang
bastetwang
不要老来偷换概念,这没劲。 就像你上个什么我为什么喜欢用goto,但你下面说的其实是: 在某种情况下用goto更易懂,但你把这个就偷换成了为什么要用goto。 你玩这种概念有啥意思呢。
下一页
0
雨翔河
雨翔河
开源嘛,就是告诉你这是可以修改的,所以你拿了这玩意儿回家去,可以也有权利把你不需要的去掉,更好的加进来,反正作者把他考虑到的所有可能性加进来了。
0
翟志军
翟志军
老鬼,在你精简代码的过程中,你是怎么保证它还是按你的思想工作的?
0
纠结名字
我一直都觉得,像你这样的大牛,应该自己写自己想要的东西。用你最拿手的汇编,最喜欢的规矩,写出只在你最满意的平台上运行的代码。这样的话,省得你还得浪费时间在吐槽其它项目上。更重要的是,如果你自己写了发出来,比你这样说“我今天研究这个了,我明天研究那个了”,要显得牛B的多。另外,你算是你们公司的产品经理吗?还是纯粹的技术负责人?
中山野鬼
中山野鬼
即做市场,也做技术规划。。。无非确定大方向后确定各个模块的目标。哈。空研究很蛋疼的。。。。
0
杨同学
杨同学
一份代码适应所有平台,反正又不会编译进obj里,为什么要拿掉?
0
中山野鬼
中山野鬼

引用来自“杨同学”的评论

一份代码适应所有平台,反正又不会编译进obj里,为什么要拿掉?
做基础测试版本,对应我们自己的正则算法代码,我需要同步增加测试点打印输出,以看自己的正则算法代码中的设计错误。哈。所以要对gcc源码中的regex代码先清洗干净,并且大体理解它的实现逻辑。
0
中山野鬼
中山野鬼

引用来自“redraiment”的评论

“以偏概全”,GCC不代表所有开源软件。

GCC做到兼容你又嫌它大,如果不兼容你又要吐槽“哈,GCC居然连XX平台都不支持”。

顺便说一句:你要是真的裁剪了GCC的代码,不要忘了以GPL协议发布你修改后的代码。我不认为GNU的伟大是你说的神码都支持,而是你修改后还需要继续以GPL协议发布,这样其他和你有相同需求的人就能直接利用你的劳动成果,节省时间。

gcc不兼容我可不吐槽哦。。。兼容和按标准来走。我没有任何意见。例如mac下和linux下,首先走的 c的标准,其次还有posix。别说gcc不兼容了,mac os下的man ,我没找到re_comp,re_exec,linux下的man对re_comp ,re_exec支持,但说明这个已经被废止,而且针对线程存在不安全性。我倒挺认可苹果的做法,都废止了,还要做什么,卡擦掉。。老的东西不代表都好,你可以自己理解下我的吐槽点,吐槽点是开源的代码,在维护上,很少做代码清洗工作,只是修bug和功能扩展,最后呢?

标准是标准,兼容是兼容。你可以仔细去看看那段代码,明显属于老代码不做清洗的。如果换一天,标准调整,有些东西废弃,我估计代码一样会大摇大摆的放在那里。这个和gcc只是各类跨平台还没什么关系,我并没有吐槽它里面支持一些小型机的代码,如果这玩意还有人用的话。哈哈。

最后要说句重点,清洗开源的代码做参考,如果谁需要我可以把清洗后的代码给他,清洗没有全部完成,不过8000多行,现在基本在4000多行,如果去掉部分没必要的注释和代码书写格式调整估计在3000行内,哈,又不值钱咯,不过直接拿它当自己产权的库,这是扯淡的事情,法律上扯淡,代码质量上更扯淡。。。

中山野鬼
中山野鬼
回复 @redraiment : gpl的哪条协议说,只要我改动了一下源码就必须发布?注意哦,我甚至没有对外使用。。
redraiment
redraiment
回复 @中山野鬼 : 如果我改的是基于GPL协议的源码的话。
中山野鬼
中山野鬼
回复 @redraiment : 哈,你下个开源的代码,在主函数里面增加个“printf("hello world");”就有义务发布咯?如果这样你们先发布吧。。。哈。好像我记得,只有当对外使用修改后的开源代码时存在提供代码的义务,对方不要也不需要发布吧。。
redraiment
redraiment
我说的“兼容”,用你的话讲就是“支持老的硬件系统”(16位等)。所以不要长篇大论地把话题扯到“标准”等其他问题上;对于你“清洗”后的代码,将它发布出来是你的“义务”,所以不要说的像是你的权利一样。
0
中山野鬼
中山野鬼

引用来自“bastetwang”的评论

咦,你怎么在用开源的“垃圾”东西了?你不是自己喷过无数次开源的东西了吗?能再无耻一点吗。
哈,我还天天骂windows是垃圾呢,我在公开场合还天天骂ibm的方案是垃圾呢(实话ibm的很多咨询和系统集成方案就是垃圾,更本配不是上ibm这三个字),但ibm是我很尊重的企业之一。。。骂它表示还对它有希望,不骂才表示彻底鄙视。。。。难道开源的东西,gnu的东西就是神了?就没有垃圾的地方了?是垃圾就说成垃圾,不是垃圾,就不说成垃圾,哈。有完美的东西吗?至少目前看到的gnu下面的源码没有。不完美的东西,说出不完美的地方,总比说不出来的要更关心它。
bastetwang
bastetwang
回复 @中山野鬼 : 一个已经不支持!=用不到 你这个前提就已经错了,你到底喷的基础又在哪里呢? 微软也不支持winxp,照你说法应该把winxp支持也去掉? 你这逻辑不是狗屁逻辑是啥?你还好意思来喷?
中山野鬼
中山野鬼
回复 @bastetwang : 哈,随便你说我无知与否。至于下面的逻辑希望你理解后再回答“一个已经不支持的工具,对其他新增代码可能带来逻辑上的错误,这种选项是否属于一个工程的bug?"这就是我这个喷点对应的讨论点。我们不展开其他废话,你针对这个问题,你说下观点,并给出论据。。。。
bastetwang
bastetwang
回复 @中山野鬼 : 你这些不成为你可以到处喷粪的理由,只能更说明你的无知和转移话题。
中山野鬼
中山野鬼
回复 @bastetwang : 哈,说你这个人想来年纪也不小了,这么激动,你自己看看我在补充话题里的举例。。这种坑我以前工程上就实实在在的遇到过。而举例的逻辑代码,在现在很多新代码中,相对16位编程环境的历史,是普遍存在也不会出错的。
bastetwang
bastetwang
回复 @中山野鬼 : 微软自己都没有支持了!=你支持已经丧失了保障性!=不需要支持 这三者有必然关系吗?你又在玩你一套诡辩的玩意吗?我劝你不要玩这些文字游戏,看似有道理,其实狗屁逻辑也没有的话。
下一页
返回顶部
顶部