打印
[LOOK]

李老师群课之 再谈元编程

[复制链接]
楼主: mahui843
手机看帖
扫描二维码
随时随地手机跟帖
41
icecut| | 2013-9-7 22:21 | 只看该作者 回帖奖励 |倒序浏览
c语言的又好又快.重新造轮子是没用的.
写个可读的查找表不难.关键
你继续看清楚了....27楼!!..不是crc....自己眼镜带错了还说别人...
crc32就是不可读!这个毋庸置疑.
元编程也不是你写crc32这个意思.理解不了看别人的回复,省得你说我坑你.

使用特权

评论回复
42
waitmoney| | 2013-9-7 22:29 | 只看该作者
总有需要的人,人人要勇于讲,只要是用心的就成,太挑剔那就只有让死去的科学家来讲了,其他人总是讲的不行.

使用特权

评论回复
43
aihe| | 2013-9-7 22:39 | 只看该作者
icecut 发表于 2013-9-7 22:21
c语言的又好又快.重新造轮子是没用的.
写个可读的查找表不难.关键
你继续看清楚了....27楼!!..不是crc.... ...

其实高中以上的数学没什么大的用处,大家都不必学
你不见小学没毕业的大老板,算起帐来比学过高等数学的强多了

使用特权

评论回复
44
icecut| | 2013-9-7 22:44 | 只看该作者
waitmoney 发表于 2013-9-7 22:29
总有需要的人,人人要勇于讲,只要是用心的就成,太挑剔那就只有让死去的科学家来讲了,其他人总是讲的不行. ...

为师者,必然要确切.代码没写好,就误人子弟.
科学家讲出来更难以理解.只能科学家用.

而师者,必须深入浅出画龙点睛.
如果大家看1天才能理解,这种推广又有什么意义呢?

使用特权

评论回复
45
icecut| | 2013-9-7 22:45 | 只看该作者
aihe 发表于 2013-9-7 22:39
其实高中以上的数学没什么大的用处,大家都不必学
你不见小学没毕业的大老板,算起帐来比学过高等数学的 ...

呵呵.因为人脑太高级太复杂.

使用特权

评论回复
46
icecut| | 2013-9-7 22:49 | 只看该作者
折腾了这一顿就为了得到一串静态数据.误解了元编程的本质和精华.
static uint32_t crc32_tab[] = {
        0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f,
        0xe963a535, 0x9e6495a3,        0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
        0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2,
        0xf3b97148, 0x84be41de,        0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
        0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec,        0x14015c4f, 0x63066cd9,
        0xfa0f3d63, 0x8d080df5,        0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
        0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,        0x35b5a8fa, 0x42b2986c,
        0xdbbbc9d6, 0xacbcf940,        0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
        0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423,
        0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
        0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,        0x76dc4190, 0x01db7106,
        0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
        0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d,
        0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
        0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
        0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
        0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7,
        0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
        0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa,
        0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
        0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81,
        0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
        0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84,
        0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
        0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
        0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
        0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e,
        0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
        0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55,
        0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
        0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28,
        0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
        0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f,
        0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
        0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
        0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
        0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69,
        0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
        0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc,
        0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
        0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693,
        0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
        0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d
};
哥啥都不用算,直接printf.无论编译速度还是执行速度.都比你快

使用特权

评论回复
47
aihe| | 2013-9-7 22:56 | 只看该作者
icecut 发表于 2013-9-7 22:45
呵呵.因为人脑太高级太复杂.

人脑高级且复杂,老是用来考虑低级的东西,是不是太浪费了啊
写模板好像不是为了再发明轮子,而是为了让发明的轮子方便大家使用吧

使用特权

评论回复
48
mahui843|  楼主 | 2013-9-7 23:02 | 只看该作者
:L 按你这个说法,C这么好,那C++,C#,java,delphi之类的都没有存在的必要了?
师者,传道授业解惑也。太简单的东西,一眼就能看懂,或者随便找点资料就能看懂了的,何必要老师教?读书也没必要了,都在家自学好了。
不能因为不了解而去排斥新的事物,世界在不断的前进,不断的会有新的事物出现。看看C++11标准出台的这个过程,其实就是为了适应新的观念和需求而自我更新的过程。标准如此,人也应当如此。

使用特权

评论回复
49
icecut| | 2013-9-7 23:13 | 只看该作者
mahui843 发表于 2013-9-7 23:02
按你这个说法,C这么好,那C++,C#,java,delphi之类的都没有存在的必要了?
师者,传道授业解惑也。 ...

c++11 并没有排斥c++以前的东西,只不过做了一些补足,
c++高于c的东西就是可读,让设计可控.
你是lz,不要被他们和我的争执所迷惑.
元编程有其优,有其劣.优是将模板进行扩展.劣是会出现莫名其妙难以调试的结果.
元编程的优势在于库,看看boost的知名度就知道了.
用元编程实现一个固定的crc table未免大材小用.有boost在前,我想我也没必要再想什么新的样例.知者自有其法.

在上面提到的wiki中,说的还很简单.他的条件,用起来就比你更加容易读.不能因为用新东西,就抛弃了c++的其他优势.这样未免就有误人子弟的感觉.

当然,给你一个方法,你可以找个一个开源网站,统计一下应用层和库层模板的使用比例,然后就能推断出元编程未来使用的比例.

使用特权

评论回复
50
icecut| | 2013-9-7 23:18 | 只看该作者
本帖最后由 icecut 于 2013-9-7 23:20 编辑
mahui843 发表于 2013-9-7 23:02
按你这个说法,C这么好,那C++,C#,java,delphi之类的都没有存在的必要了?
师者,传道授业解惑也。 ...

http://www.opensource.apple.com/source/xnu/xnu-1456.1.26/bsd/libkern/crc32.c
看看crc32本来的样子.你的代码编译出来也应该是这个结果.只不过用代码替换了数据.
作为元编程的样例,用这种静态数据固然简单.但是给人的感觉是更加复杂了.还难以理解和调试了.

我并不是你想象的那样,从底层到高层,我都选几种语言学习.我的汇编/c/c++/java代码都写进了商业级的产品中.以及tcl,perl等脚本语言也少量使用.

我觉得你这个写法作为给初学者样例,及其不成功.否则就不会有人回复你看了一天吐血了.
至于那个李老师,真不知是谁,搜他的邮件也就不超过10个结果.如果说是李  大 师,恐怕更确切一些.

使用特权

评论回复
51
mahui843|  楼主 | 2013-9-8 08:42 | 只看该作者
  这个帖子已经偏离原本的目的了。这篇帖子的出现是因为大家有了相关的讨论,老师借这个契机,用这个例子来讲解元编程。
  你可以看一下,帖子的标题是再谈元编程。前面已经有了一篇了。不要因为这个帖子打上了编辑推荐而忽视了其内容上的前后连贯性。这只是一系列课程中的一篇而已。元编程说到底,也不是太适合C++初学者。
  feels like a new language — the pieces just fit together better----Bjarne Stroustrup。
  C++标准的更新,吸收了不少其他语言的精华。新的概念的出现,首先是因为有了需求。不能因为自己的守旧而去排斥别人的创新。
  kseeker在前面的回帖中也说了,“这东西诞生之初很多人,甚至包括Bjarne Strou-strup,都认为是“过于聪明”的东西。结果经过多年的演变,诞生出了一批相当优秀的库。至今为止,这玩意还处于半学术研究状态,各种磕磕绊绊自然是少不了。”

  在21ic,李老师是AVR版的版主,LOOK rtos的作者,已经在google code上开源了。菜农的助学园地有专门的版面。我看过源码,觉得非常的优雅。当然,不同的人,不同的水平可能有不同的理解。若有兴趣,可以先去了解一下。还是那句话:不调查就没有发言权。

  按你回帖的顺序来看,其实整个过程已经很清楚了。你回帖中不少自相矛盾的地方,是随着你对C++逐步的了解而出现的。
  讨论技术,是一件很轻松和愉悦的事,因为他严谨,不涉及其它;就事论事。我一直觉得,技术人员也应该有这么一种态度:不要因为反对而反对,更不要因为反对而排斥。这是一种应该有的起码的态度。
  如果这一点做不到,我还是建议先读一下房龙所著的《宽容》,没时间的话,读一下序言也不错。

  欲齐其家者先修其身。欲修其身者先正其心。提高技术修养的同时,更要提高自身的修养。
  论坛其实也是个藏龙卧虎的地方,有些高手可能会笑而不语,有些可能会拍砖了。谦逊一点,低调一点。在技术论坛,还是讨论技术吧。贬低别人,也未必能够抬高自己。
  十万行的C++代码,还真不算多。你出道应该也有好几年了,平均一下,也没多少。如果都是写的一些简单的C++代码,那也只是只是一些低层次的重复性的体力劳动而已,没有什么值得炫耀的。再说了,技术,又有什么好值得炫耀的?

附上《宽容》序言
在宁静的无知山谷里,人们过着幸福的生活。
永恒的山脉向东西南北各个方向蜿蜒绵亘。
知识的小溪沿着深邃破败的溪谷缓缓地流着。
它发源于昔日的荒山。
它消失在未来的沼泽。
这条小溪并不象江河那样波澜滚滚,但对于需求浅薄的村民来说,已经绰有余裕。
晚上,村民们饮毕牲口,灌满木桶,便心满意足地坐下来,尽享天伦之乐。
守旧的老人们被搀扶出来,他们在荫凉角落里度过了整个白天。对着一本神秘莫测的古书苦思冥想。
他们向儿孙们叨唠着古怪的字眼,可是孩子们却惦记着玩耍从远方捎来的漂亮石子。
这些字眼的含意往往模糊不清。
不过,它们是一千年前由一个已不为人所知的部族写下的,因此神圣而不可亵渎。
在无知山谷里,古老的东西总是受到尊敬。
谁否认祖先的智慧,谁就会遭到正人君子的冷落。
所以,大家都和睦相处。
恐惧总是陪伴着人们。谁要是得不到园中果实中应得的份额,又该怎么办呢?
深夜,在小镇的狭窄街巷里,人们低声讲述着情节模糊的往事,讲述那些敢于提出问题的男**女。
这些男**女后来走了,再也没有回来。
另一些人曾试图攀登挡住太阳的岩石高墙。
但他们陈尸石崖脚下,白骨累累。
日月流逝,年复一年。
在宁静的无知山谷里,人们过着幸福的生活。
外面是一片漆黑,一个人正在爬行。
他手上的指甲已经磨破。
他的脚上缠着破布,布上浸透着长途跋涉留下的鲜血。
他跌跌撞撞来到附近一间草房,敲了敲门。
接着他昏了过去。借着颤动的烛光,他被抬上一张吊床。
到了早晨,全村都已知道:“他回来了。”
邻居们站在他的周围,摇着头。他们明白,这样的结局是注定的。
对于敢于离开山脚的人,等待他的是屈服和失败。
在村子的一角,守旧老人们摇着头,低声倾吐着恶狠狠的词句。
他们并不是天性残忍,但律法毕竟是律法。他违背了守旧老人的意愿,犯了弥天大罪。
他的伤一旦治愈,就必须接受审判。
守旧老人本想宽大为怀。
他们没有忘记他母亲的那双奇异闪亮的眸子,也回忆起他父亲三十年前在沙漠里失踪的悲剧.
不过,律法毕竟是律法,必须遵守。
守旧老人是它的执行者。
守旧老人把漫游者抬到集市区,人们毕恭毕敬地站在周围,鸦雀无声。
漫游者由于饥渴,身体还很衰弱,老者让他坐下。
他拒绝了
他们命令他闭嘴。
但他偏要说话。
他把脊背转向老者,两眼搜寻着不久以前还与他志同道合的人。
“听我说吧,”他恳求道,“听我说,大家都高兴起来吧!我刚从山的那边来,我的脚踏上了新鲜的土地,我的手感觉到了其他民族的抚摸,我的眼睛看到了奇妙的景象。
“小时候,我的世界只是父亲的花园。
“早在创世的时候,花园东面、南面、西面和北面的疆界就定下来了。
“只要我问疆界那边藏着什么,大家就不住地摇头,一片嘘声。可我偏要刨根问底,于是他们把我带到这块岩石上,让我看那些敢于蔑视上帝的人的嶙嶙白骨。
“‘骗人!上帝喜欢勇敢的人!’我喊道。于是,守旧老人走过来,对我读起他们的圣书。他们说,上帝的旨意已经决定了天上人间万物的**。山谷是我们的,由我们掌管,野兽和花朵,果实和鱼虾,都是我们的,按我们的旨意行事。但山是上帝的,对山那边的事物我们应该一无所知,直到世界的末日。
“他们是在撒谎。他们欺骗了我,就象欺骗了你们一样。
“那边的山上有牧场,牧草同样肥沃,男**女有同样的血肉,城市是经过一千年能工巧匠细心雕琢的,光采夺目。
“我已经找到一条通往更美好的家园的大道,我已经看到幸福生活的曙光。跟我来吧,我带领你们奔向那里。上帝的笑容不只是在这儿,也在其它地方。”
他停住了,人群里发出一声恐怖的吼叫。
“亵渎,这是对神圣的亵渎。”守旧老人叫喊着。“给他的罪行以应有的惩罚吧!他已经丧失理智,胆敢嘲弄一千年前定下的律法。他死有余辜!”
人们举起了沉重的石块。
人们杀死了这个漫游者。
人们把他的尸体扔到山崖脚下,借以警告敢于怀疑祖先智慧的人,杀一儆百。
没过多久,爆发了一场特大干旱。潺潺的知识小溪枯竭了,牲畜因干渴而死去,粮食在田野里枯萎,无知山谷里饥声遍野。
不过,守旧老人们并没有灰心。他们预言说,一切都会转危为安,至少那些最神圣的篇章是这样写的。
况且,他们已经很老了,只要一点食物就足够了。
冬天降临了。
村庄里空荡荡的,人稀烟少。
半数以上的人由于饥寒交迫已经离开人世。活着的人把唯一希望寄托在山脉那边。
但是律法却说,“不行!”
律法必须遵守。
一天夜里爆发了叛乱。
失望把勇气赋予那些由于恐惧而逆来顺受的人们。
守旧老人们无力地抗争着。
他们被推到一旁,嘴里还抱怨自己的**不济,诅咒孩子们忘恩负义。不过,最后一辆马车驶出村子时,他们叫住了车夫,强迫他把他们带走。
这样,投奔陌生世界的旅程开始了。
离那个漫游者回来的时间,已经过了很多年,所以要找到他开辟的道路并非易事。
成千上万人死了,人们踏着他们的尸骨,才找到第一座用石子堆起的路标。
此后,旅程中的磨难少了一些。
那个细心的先驱者已经在丛林和无际的荒野乱石中用火烧出了一条宽敞大道。
它一步一步把人们引到新世界的绿色牧场。
大家相视无言。
“归根结底他是对了,”人们说道。“他对了,守旧老人错了。”
“他讲的是实话,守旧老人撒了谎……
“他的尸首还在山崖下腐烂,可是守旧老人却坐在我们的车里,唱那些老掉牙的歌子。
“他救了我们,我们反倒杀死了他。”
“对这件事我们的确很内疚,不过,假如当时我们知道的话,当然就……”
随后,人们解下马和牛的套具,把牛羊赶进牧场,建造起自己的房屋,规划自己的土地。从这以后很长时间,人们又过着幸福的生活。
几年以后,人们建起了一座新大厦,作为智慧老人的住宅,并准备把勇敢先驱者的遗骨埋在里面。
一支肃穆的队伍回到了早已荒无人烟的山谷。但是,山脚下空空如也,先驱者的尸首荡然无存。
一只饥饿的豺狗早己把尸首拖入自己的洞穴。
人们把一块小石头放在先驱者足迹的尽头(现在那已是一条大道),石头上刻着先驱者的名字,一个首先向未知世界的黑暗和恐怖挑战的人的名字,他把人们引向了新的自由。
石上还写明,它是由前来感恩朝礼的后代所建。
这样的事情发生在过去,也发生在现在,不过将来(我们希望)这样的事不再发生了。

使用特权

评论回复
评论
icecut 2013-9-8 23:08 回复TA
不要乱加猜测.你水平还不够."如果都是写的一些简单的C++代码,"此段错误,莫须有. 
52
缥缈九哥| | 2013-9-8 09:12 | 只看该作者
我对C++是门外汉,对编程,对技术都是初学者。我也赞成,人要不断发展,技术也要不断发展。不断学习,不断进步。不能学很多老学究,讲了几十年的教材,只守着几十年前用熟的A51那么点技术或者说秘诀不敢交流也不敢公开讨论,不思进取。

使用特权

评论回复
53
speme| | 2013-9-8 11:50 | 只看该作者
有人在嵌入式用C++? 想知道哪个编译器支持C++。再有,好像C++编译出来的文件会比较大。要库支持的说,以前整PC上软件带用C++,但搞嵌入式好像用不着,当然,上linux系统用得上。

使用特权

评论回复
评论
icecut 2013-9-8 23:12 回复TA
如果有机会还是用用.裸奔c++还要看编译器心情 
54
mahui843|  楼主 | 2013-9-8 11:59 | 只看该作者
mdk就自带C++的编译器啊,但对C++11支持的不是太好。如果想用到一些新的特性,可以参考这篇帖子:https://bbs.21ic.com/icview-554086-1-1.html,建立mdk+gcc的开发环境。

使用特权

评论回复
55
信步看风景| | 2013-9-8 12:48 | 只看该作者
本帖最后由 信步看风景 于 2013-9-8 15:15 编辑

我目前不会用C++,虽然我用C做过不少的项目,

但我觉得,用C++可能是一种尝试,这种尝试是否失败,不可而知,佩服lee老师。

至于 icecut,你喜欢用什么就用什么,不喜欢用也无需大动肝火吧。

别人用什么,干卿何事?

使用特权

评论回复
评论
icecut 2013-9-8 23:14 回复TA
教学光荣,误导可耻. 
56
aihe| | 2013-9-8 15:20 | 只看该作者
楼上的弄错了吧,楼主只是贴个程序,大家来学习一下,没有强迫谁用啥
倒是有一些人在一边指指点点,说这个不好,那个不是啊
看得懂,大家探讨一下也无妨,看不懂,等于对牛弹琴了

使用特权

评论回复
57
天凉好个秋| | 2013-9-8 15:57 | 只看该作者
对于编程来说,C是刀子
C++,元编程是斧头

砍什么树 用什么工具 (考虑运行效率和开发成本)
NB 的人 没用定规用什么不用什么的。
没有做好的 只有最适合的~

使用特权

评论回复
58
lxyppc| | 2013-9-8 21:10 | 只看该作者
icecut 发表于 2013-9-7 22:49
折腾了这一顿就为了得到一串静态数据.误解了元编程的本质和精华.
static uint32_t crc32_tab[] = {
        0x0000 ...

这个表格正好说明了元编程(确切说是编译时展开)的一些优势
如果这么一个表格放在那里,你不说,谁知道这是什么东西

单就CRC而言,他的主要参数是计算顺序,位数,以及多项式,初始值(包括但不限于这些参数,这里只是举个例子)
一般为了加快计算速度,我们会用查表的方式(表格不是唯一加快计算速度的方式,这里只是举个例子)
这个表格一般预先生成,放在ROM中(也有程序会在运行时生成,这里只是举个例子)

如果用元编程,我们可以根据参数在编译时生成这些表格,使代码看起来是这样的
crc_table<多项式,计算顺序,初始值,位数>  table;
后面就是查表计算的代码了
crc_table 是一个由库设计者提供的接口,这样应用程序在使用的时候,看起来会更简洁,优雅
而作为一个只写应用不设计库的人,不用去关心这个crc_table的实现细节
因为  你们写的是application,不是lib,不一样的思路的.把大家忽悠傻了不好
所以crc_table的实现 不在这里贴出了

使用特权

评论回复
评论
mahui843 2013-9-8 21:51 回复TA
果然是高手! 
评分
参与人数 1威望 +4 收起 理由
john_lee + 4 阐述得相当到位!!
59
john_lee| | 2013-9-8 21:41 | 只看该作者
lxyppc 发表于 2013-9-8 21:10
这个表格正好说明了元编程(确切说是编译时展开)的一些优势
如果这么一个表格放在那里,你不说,谁知道 ...

老弟高见,完整的查找表模板的确应该是这个样子,我写的那个crc32查找表模板例子,目的只是想讲解元编程的一般方法,为了避免不必要的复杂性,所以省掉了那些模板参数。

某人自以为高人,却只会光说不练,批评别人的程序说“c++元编程真不是你这么玩的”,要他写个来看看,死活写不出来,却东拉西扯打迷踪拳,企图掩盖他实际是元编程外行的真相。

再次奉劝某人,不要对自己不懂的知识妄加评论,那样会遭人耻笑的。

使用特权

评论回复
60
icecut| | 2013-9-8 22:58 | 只看该作者
本帖最后由 icecut 于 2013-9-8 23:03 编辑
lxyppc 发表于 2013-9-8 21:10
这个表格正好说明了元编程(确切说是编译时展开)的一些优势
如果这么一个表格放在那里,你不说,谁知道 ...

你错了...crc的钥匙是固定的.如果是可变的,那表直接垃圾堆.
比如说有的公司要用私有校验,还是类似crc,用你这种模板非常愉快.

但是...crc是标准的,整个地球就一张表,你这是给编译器压力.浪费cpu电能.

这个争论在于,静态还是非静态.用静态例子就是错误引导.用动态例子就是正确引导.
可惜了,不是实现rsa.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则