代码改变世界

linux中的火花

2010-04-09 20:15  Iron  阅读(279)  评论(0编辑  收藏  举报

     最近在看unix高级编程,我一直都是microsoft的粉丝,不过也喜欢开源,不过总觉的windows下的编程更可控一点,现在接触linux的比较多了,才发现原来在任何时候可实现代码查看到底的编程对于许多无厘头问题的解决有莫大的好处。而且除了这个我发先linux界的程序员在某些点上确实有惊人的火花。

  大家首先看这个宏的实现:

#define offsetof(TYPE, MEMBER)  ((int)&((TYPE *)0)->MEMBER)

   宏的作用是计算成员在结构中的偏移量,该宏的具体解释是:把0看作是一个TYPE对象的地址,然后定位到他的成员MEMBER,再用&操作符返回成员的地址,然后把地址强制转化为int类型,这样结果正好是MEMBER相对于TYPE的地址。

 

   我看到这一行时,真的是由衷的感叹这名程序员的聪明才智~

   写到这里,我突然又想起microsoft中关于_countof宏的实现,那个实现将C++的模板技术用的也是淋漓尽致,尽显编程之美,读到此文的同学们可以去看看这个宏,看你是否能凭一己之力将其剖析清楚~