现在位置: 首页

C语言扩展用法—container_of()

2019-10-26 20:52 工业·编程  ⁄ 共 1541字 暂无评论
    在Linux内核源码中,实现和链表相关的接口list_entry()时,会调用container_of()宏定义,它的作用是:给定结构体中某个成员的地址、该结构体类型和该成员的名字,来获取这个成员所在的结构体变量的首地址。有点绕,没关系,接着往下看就能明白了。 container_of()宏定义实现如下所示 /** * container_of - cast a member of a structure out to the containing structure * * ...
阅读全文

白云先生:美国输了,会带着嫁妆嫁给中国

2019-10-26 14:45 战略·谋略  ⁄ 共 4676字 评论 29 条
一、美国对中国,打是不可能打赢的 从奥巴马时期的重返亚太,在南海针对中国的军事威慑,到最近打了好几年的贸易战,金融战,还有对华为的围剿。以及外交战场上对中国的围追堵截,企图建立反中同盟来对付中国,还有针对中国的文化战手段。美国这些年,可谓是用尽了手段,来遏制中国,结果各个战线上它都失败了。 在军事上,美国的战争讹诈,被我们挫败。这里面有三个大事,一个是在南海对峙,美国的航母被我们赶跑。这对美国来...
阅读全文

C语言扩展用法—typeof( ((type *)0)->member )和offset_of()

2019-10-25 20:45 工业·编程  ⁄ 共 937字 暂无评论
本文讲解typeof( ((type *)0)->member )的含义,并在此基础上学习offset_of()的用法。 typeof( ((type *)0)->member ) ANSI C标准允许值为0的常量被强制转换成任何一种类型的指针,并且转换的结果是个NULL,因此((type *)0)的结果就是一个类型为type *的NULL指针. 如果利用这个NULL指针来访问type的成员当然是非法的,但typeof( ((type *)0)->member )是想取该成员的类型(有关typeof()的用法可参考这里),所以编译器...
阅读全文

第十九届中共中央政治局第十八次集体学习

2019-10-24 20:49 战略·谋略  ⁄ 共 1378字 暂无评论
中共中央政治局10月24日下午就区块链技术发展现状和趋势进行第十八次集体学习。中共中央总书记习近平在主持学习时强调,区块链技术的集成应用在新的技术革新和产业变革中起着重要作用。我们要把区块链作为核心技术自主创新的重要突破口,明确主攻方向,加大投入力度,着力攻克一批关键核心技术,加快推动区块链技术和产业创新发展。 浙江大学教授、中国工程院院士陈纯就这个问题作了讲解,并谈了意见和建议。 中共中央政治局各...
阅读全文

C语言扩展语法—typeof()关键字

2019-10-24 20:34 工业·编程  ⁄ 共 1571字 评论 2 条
typeof() 是GCC提供的一种特性,可参考C-Extensions,它可以取得变量的类型,或者表达式的类型。 本文总结了typeof()关键字的常见用法,并给出了相应的例子,以加深理解 。 typeof()关键字常见用法 1、不用知道函数返回什么类型,可以使用typeof()定义一个用于接收该函数返回值的变量 #include <stdio.h> #include <stdlib.h> #include <string.h> struct apple{     int weight;   ...
阅读全文

白云先生:美国从叙利亚撤军的地缘剖析

2019-10-23 21:59 战略·谋略  ⁄ 共 3831字 暂无评论
最近的国内外的时局,有两大焦点。一个焦点是,美国滚出中东,未来的中东格局会如何演变。另一个焦点是,美国金融战败之后,跨国资本未来将如何融入中国和加入中国。本文先讲第一个问题,第二个问题,我们后面再单独讲。 从整体来看,目前的局势不是一般的乱,但是从长期来看,现在所处的阶段就是黎明破晓之前的时刻,很快就会曙光初现的那个阶段。也就是说,短期看很乱,长期看是好事。可谓是,天下大乱,形势大好。 我们先来...
阅读全文

typeof在linux中妙用

2019-10-23 20:30 工业·编程  ⁄ 共 810字 暂无评论
如果你对sizeof很熟悉的话,那么大可进行类推,sizeof(exp.)返回的是exp.的数据类型大小,那么typeof(exp.)返回的就是exp.的数据类型。值得注意的是在上面的话里我们可以看到,如果编译选项中指定了使用标准C,那么gcc的扩展使用可能会受到影响,不过在gcc编译条件下使用__typeof__依然可以正常工作,这和使用asm是一样的。当然如果是在其他的编译器条件下,这样做也不行了,只能自定义一个macro去使用,也就是说跟gcc没啥...
阅读全文

glibc源码分析之系统调用(二)

2019-10-22 18:59 工业·编程  ⁄ 共 4638字 暂无评论
前文已经向大家介绍了用脚本封装系统调用的方法。在本文中,我将向大家介绍使用.c文件封装系统调用的方法。 使用.c文件封装系统调用一般出于以下两个原因:一,系统调用已过时,可以使用新的系统调用替换旧的系统调用。系统调用的语义不变。二,封装后的函数改变了系统调用的语义。 stat系统调用的封装便是原因一的一个例子。 stat系统调用是106号系统调用。使用stat系统调用可以获取文件的属性,但是获取的属性值都是32位的,...
阅读全文

【每日一字】拳:业广因功苦,拳拳志士心

2019-10-22 16:30 生活·感悟  ⁄ 共 1283字 暂无评论
经典武侠片里,常会出现这样一幕:武林高手在过招之前,先相向而立,再抱拳寒暄一番,嘴角还噙着深不可测的笑容。这看似简单的抱拳礼,蕴含着什么门道呢? 古人行抱奉礼,一般是左手抱右,因为人们常用右手出拳,用左手抱住或遮住右拳,则表示对武力的自我约東,意指“勇不滋事”、“武不犯禁”。左掌、右拳拢屈,两臂环抱成圆,表示五湖四海,以武会友。此外,左掌为文,右拳为武,该礼也表示文武兼备。 “举”始见于战国文字,是个形...
阅读全文

glibc源码分析之系统调用(一)

2019-10-21 18:53 工业·编程  ⁄ 共 8749字 评论 1 条
本文所有描述都是基于glibc-2.26。 系统调用 系统调用是程序员接触到的最底层的构建程序的组件。它们由内核实现,提供给程序调用。用户按照其调用规则可以实现调用。 glibc的封装方式 glibc使用了两种方式来封装系统调用。一种是由脚本生成。一种是.c文件。 使用.c文件封装系统调用,是因为封装过程比较复杂,除了按系统调用的调用规则来封装外,还要进行其他处理。而脚本生成则十分简单。只要按照系统调用的调用规则来封装即可...
阅读全文