百科问答小站 logo
百科问答小站 font logo



Linus 真心诚意地夸过哪些人或技术? 第1页

  

user avatar   xiao-jian-67 网友的相关建议: 
      

我来补充一下@guo-zhao-liang 的答案吧。这个问题就他一个是说技术的。

事情是这样的,有人写了一个宏,用来在C语言里检测一个表达式是否是integer constant expressions,邮件里简写ICE。

                #define ICE_P(x) (sizeof(int) == sizeof(*(1 ? ((void*)((x) * 0l)) : (int*)1)))            

就这一行,Linus是这么夸他的:

That is either genius, or a seriously diseased mind.

要么是个天才,要么是脑子病得不轻。

你们家夸人。。。。真的挺别致的。。。。


然后Linus认真的给大家解释了这个宏是怎么工作的

x是ICE的时候,比如1或者1+1的时候

       ((void*)((x) * 0l))     

会在编译时确定为NULL

于是变成

        sizeof(*(1 ? NULL : (int*)1)))     

C语言要求对于三元操作符(code ? a : b ),如果a或者b有一个是NULL,则结果的类型是另一个的类型

因此变成sizeof(*(int*)1),也就是sizeof(int)。等号成立


x不是ICE的时候,会变成

         sizeof(*(1 ? ((void*)0) : (int*)1)))     

三元操作符的条件是1,所以总是等于第一个的值

       sizeof(*(void *)0)     

而在gcc下,这个值是1,一定不会等于sizeof(int)


然后Linus说,这个宏问题其实很多,首先sizeof(void)不是C语言标准,其次这玩意正常人看不懂


最后Linus又非常委婉的夸奖了一下这一行代码

I'm in awe of your truly marvelously disgusting hack. That is truly a
work of art.

你这个hack(技巧?)超乎寻常的恶心,我对此表示敬畏。这真的是艺术品了。


我对Linus夸人的技巧也想表示表示敬畏




  

相关话题

  为什么不用汉语来开发一个高级计算机语言直接对应01?汉语的横竖撇捺解构比英语要有效的多啊? 
  你写过的自己觉着最牛的黑程序是什么? 
  Linux 是否比 Windows 省电? 
  如何评价全球定位系统(GPS)周计数器即将第二次归零这一事件? 
  为什么有很多的程序员觉得Linux比Windows更加方便,更加有效率? 
  为什么 AI 发展到今天,围棋能下过李世石、柯洁,仍不能完成帮人类洗衣物、做饭这种简单的事? 
  为什么程序比较难写、bug 比较难调呢? 
  今年刚上岸,跟一个老师学习了一段时间后,可以换老师吗? 
  为什么我们需要了解编程的历史? 
  在线教育平台上有哪些让你相见恨晚的计算机或互联网课程? 

前一个讨论
美国人自己不读理工科的硕博的吗?
下一个讨论
李飞飞为何卸任 Google 首席 AI 科学家?





© 2024-06-03 - tinynew.org. All Rights Reserved.
© 2024-06-03 - tinynew.org. 保留所有权利