标题:说说你见过哪些拍案叫绝的C代码?
取消只看楼主
mindfulness
Rank: 3Rank: 3
等 级:论坛游侠
威 望:3
帖 子:27
专家分:110
注 册:2021-5-8
结帖率:100%
已结贴  问题点数:20 回复次数:4 
说说你见过哪些拍案叫绝的C代码?
说说你见过哪些拍案叫绝的C代码,大佬们一起来聊聊。
我先说两个kenrel的秀儿

1. container_of 的实现

这个由元素到结构体的宏真的秀:((type *)0
程序代码:
#define container_of(ptr, type, member) ({              \         
const typeof( ((type *)0)->member ) *__mptr = (ptr);    \         
(type *)( (char *)__mptr - offsetof(type,member) );})

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


2. wake up events 计数
一个32位数据分上半部16位和下半部16位,用原子操作同时更新
程序代码:
  53 static void split_counters(unsigned int *cnt, unsigned int *inpr)
  54 {
  55         unsigned int comb = atomic_read(&combined_event_count);
  56
  57         *cnt = (comb >> IN_PROGRESS_BITS); //处理完成的
  58         *inpr = comb & MAX_IN_PROGRESS; // 正在处理的
  59 }
     if  active 
  547         cec = atomic_inc_return(&combined_event_count);
       if deactive
  677         cec = atomic_add_return(MAX_IN_PROGRESS, &combined_event_count);
搜索更多相关主题的帖子: type 代码 member unsigned int 
2021-05-20 02:24
mindfulness
Rank: 3Rank: 3
等 级:论坛游侠
威 望:3
帖 子:27
专家分:110
注 册:2021-5-8
得分:0 
这两个运用是linux kernel的代码,对新手来说可能不太能理解,

但是是真真是“怎一个妙字了得”,这代码,简直比A片还让人剌激!

/*
*  Simple love, simple C.
*/
2021-05-20 02:30
mindfulness
Rank: 3Rank: 3
等 级:论坛游侠
威 望:3
帖 子:27
专家分:110
注 册:2021-5-8
得分:0 
没有Cer来分享一下吗?

/*
*  Simple love, simple C.
*/
2021-05-22 06:12
mindfulness
Rank: 3Rank: 3
等 级:论坛游侠
威 望:3
帖 子:27
专家分:110
注 册:2021-5-8
得分:0 
回复 4楼 lin5161678

虽然也算是个办法,只是,可读性和可拓展性也太差了些,,

/*
*  Simple love, simple C.
*/
2021-05-23 05:39
mindfulness
Rank: 3Rank: 3
等 级:论坛游侠
威 望:3
帖 子:27
专家分:110
注 册:2021-5-8
得分:0 

罢了,想来是新人多,老人少。
新人又是求助的多,分享的少,
看来咱论坛的技术环境还是有待改善啊。

/*
*  Simple love, simple C.
*/
2021-05-23 07:30



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-505786-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025563 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved