首页 » IT » 自相矛盾!

自相矛盾

程序员牛头不对马嘴的地方很多,这也成了我们娱乐的把戏。

GCC自相矛盾

鱼书(《C专家编程》)有一节讲述了gcc手册与程序自相矛盾的故事(如下):

在定制ANSI C标准时,引入了pragma指示符,这个指示符来源于Ada。#pragma用于向编译器提示一些信息,诸如希望把某个特定函数扩展为内联函数,或者取消边界的检查。由于它并非C语言所固有,pragma遭到了一个gcc编译器设计者的积极抵制,他把这个“由编译器定义”的效果做的很搞笑 - 在gcc 1.34版,如果使用了pragma,将会导致编译器停止编译,且运行一个计算机游戏!在gcc手册中有如下说明:在ANSI C标准中,"#pragma"指令会产生一个由编译器定义的任意效果。在GNU C预处理器中,一旦遇见"#pragma"指令,它首先试图运行rogue游戏;如果失败,尝试运行hack游戏,如果还是失败,它会尝试运行GNU Emacs,显示汉诺塔(Tower of Hanoi)。如果仍然失败,它就报告一个致命错误。总之,预处过程不会继续下去。

接下来,精彩的来了,鱼书的作者通过gcc的源代码,发现手册的描述是错误的:“特别好笑的是,用户手册中的描述是错误的,他把hack和rogue的次序搞反了”。

Xdebug

自打看完鱼书后,我也发现一些程序、手册或者注释中相互矛盾的地方,十分好笑。

Xdebug安装完成后(pecl install xdebug),有一段这样的提示:

You should add "extension=xdebug.so" to php.ini(你应该把"extension=xdebug.so"加到php.ini中)。

而Xdebug的手册却写道:

You should ignore any prompts to add "extension=xdebug.so" to php.ini - this will cause problems.(你应该忽略把"extension=xdebug.so"加到php.ini的提示,它将会导致问题。)

最后结论是手册是正确的,应该忽略这个提示,并按手册的指导来操作!

分享

0