#if 0 /*abcdefghijklmn, ( and ABCDEFGHHHHSASA */ ..... #endif请问有人会这么写代码吗?我只是指出这段代码确实不合理而已。悲哀点在于,有些人为自己能看懂这段代码感到非常荣幸和自豪,因为他知道编译器先处理掉注释再做宏的预处理,这只能说明他没有忘掉当初学C语言时学到的东西,既然编译器的行为标准不是他制定的,那么他一定是学来的。很多人都不是在看第一行代码,写第一行代码的时候才知道它的,如果来了一个新人,他不懂这些,当然只是还没有学到,知道这么一个事实对于coder来讲是早晚的事,知道这一点确实不是什么值得自豪的事情,但他有逻辑,能看懂别人的代码,面对这么一大堆僵尸代码,这不是折磨人吗?难道不令人费解吗?确实,编译器没有迷惑,只是编译器愤怒了而已,如果C标准不允许这么写的话,编译器会轻松很多,能看懂这段代码并觉得这么写没问题的人,记住,是编译器在纵容你,惯着你,不要得寸进尺。
sth1 ...goto err sth1 if error sth2 ...goto err sth2 if error sth3 ...goto err sth3 if error return err sth3 err sth2 err sth1在err sth3往下,一系列的回退可以自动进行。当然,如果你憎恨goto,用多层的do{}while(0)也是可以的,但是问题又来了,不是也有人说过层次太多不好吗?问题是,就因为某个大湿说了一句goto不好,从此goto就背上骂名了?如果你不是存在主义者,是不是应该大骂goto的引入者或者C的发明人呢?其实,goto也是艺术。事实上,以上指出的其二就是,任何东西,看你怎么用,屎不能喂人,但可以喂狗,仅此而已。
针对OpenSSL吐嘈的吐嘈-如此唱反调,布布扣,bubuko.com
原文地址:http://blog.csdn.net/dog250/article/details/25489819