百科问答小站 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夸人的技巧也想表示表示敬畏




  

相关话题

  Cygwin 和MinGW 的区别与联系是怎样的? 
  linux更新后无法启动时你的心情怎样、第一步怎么做? 
  如果用计算机按照物理模型完模拟一个小型世界,是否需要模拟人的眼睛呢? 
  windows有更方便的IDE进行开发, 为什么互联网公司的服务器还是用linux? 
  到了 2022 年,人工智能有哪些真正可落地的应用? 
  安卓1.0明显是基于linux内核开发的,安卓1.0是不是linux套壳? 
  ARM 版处理器的 MacBook 推出后,你会选 X86 版还是 ARM 版? 
  我们高中数学为什么不重视算法?高中学的数列,三角函数,求导,圆锥曲线相关问题的解法和算法有什么关系? 
  如何用通俗的语言解释拓扑排序? 
  如何看待明尼苏达大学因插入实验性漏洞,被禁止贡献 Linux 内核代码? 

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





© 2025-04-16 - tinynew.org. All Rights Reserved.
© 2025-04-16 - tinynew.org. 保留所有权利