- 浏览: 23659 次
- 性别:
- 来自: 北京
-
最新评论
Linux中的C语言妙用
1.两个数比较大小 #define min( x,y) ({ \ typeof( x) _x = ( x); \ typeof( y) _y = ( y); \ (void) (&_x == &_y); \ //妙用!作用是检查参数 x 和 y 的类型是否相同 _x < _y ? _x : _y; }) 2.链表的使用 这个不多说了,太棒了,可以由一个链表成员获取宿主的指针 3.do{}while(0)的使用 #define func(x) do{...;}while(0) 4.结构体中的#define strUCt sock { struct sock_common __sk_common; #define sk_family __sk_common.skc_family #define sk_state __sk_common.skc_state ..... }; 5.使用C写出的面向对象程序,通过给结构体中的成员赋予不同的函数指针而实现不同的功能,取代了大量的case语句 6.通过条件宏定义,同一函数名有不同的实现,方便调用此函数 #ifdef xxx #define func(x) do{实现;}while(0) #else #define func(x) do{}while(0) 7.零长度数组 GNU C 允许使用零长度数组,在定义变长对象的头结构时,这个特性非常有用。例 如: struct minix_dir_entry { __u16 inode; char name[0]; }; 8.可变参数宏 在 GNU C 中,宏可以接受可变数目的参数,就象函数一样,例如: #define pr_debug(fmt,arg...) \ printk(KERN_DEBUG fmt,##arg)
1.两个数比较大小 #define min( x,y) ({ \ typeof( x) _x = ( x); \ typeof( y) _y = ( y); \ (void) (&_x == &_y); \ //妙用!作用是检查参数 x 和 y 的类型是否相同 _x < _y ? _x : _y; }) 2.链表的使用 这个不多说了,太棒了,可以由一个链表成员获取宿主的指针 3.do{}while(0)的使用 #define func(x) do{...;}while(0) 4.结构体中的#define strUCt sock { struct sock_common __sk_common; #define sk_family __sk_common.skc_family #define sk_state __sk_common.skc_state ..... }; 5.使用C写出的面向对象程序,通过给结构体中的成员赋予不同的函数指针而实现不同的功能,取代了大量的case语句 6.通过条件宏定义,同一函数名有不同的实现,方便调用此函数 #ifdef xxx #define func(x) do{实现;}while(0) #else #define func(x) do{}while(0) 7.零长度数组 GNU C 允许使用零长度数组,在定义变长对象的头结构时,这个特性非常有用。例 如: struct minix_dir_entry { __u16 inode; char name[0]; }; 8.可变参数宏 在 GNU C 中,宏可以接受可变数目的参数,就象函数一样,例如: #define pr_debug(fmt,arg...) \ printk(KERN_DEBUG fmt,##arg)
发表评论
-
Linux无盘工作站架设实例
2016-11-30 14:33 1044Linux无盘工作站架设实 ... -
指令大全 - Linux 指令篇:档案目录管理--more
2016-11-30 14:15 661指令大全 - Linux 指令篇:档案目录管理--more 名 ... -
指令大全 - Linux 指令篇:字串处理--tr
2016-11-28 11:35 612指令大全 - Linux 指令篇:字串处理--tr 名称:tr ... -
Linux基础 linux命令:XF86Setup
2016-11-28 11:25 697Linux基础 linux命令:XF86Setup XF86S ... -
Linux基础-linux命令:cmp
2016-11-25 13:43 576Linux基础-linux命令:cmp cmp(compar ... -
Linux基础-linux命令:csplit
2016-11-25 11:49 558Linux基础-linux命令:csplit csplit(c ... -
Linux基础知识 linux命令:dnsconf
2016-11-24 11:45 623Linux基础知识 linux命令:dnsconf dnsc ... -
Linux基础资料 linux命令:efax
2016-11-24 11:41 719Linux基础资料 linux命令 ... -
linux命令:elm
2016-11-23 11:50 625linux命令:elm elm 功能说明:E-mail管理程序 ... -
Linux基础:linux命令archive
2016-11-23 11:32 757Linux基础:linux命令archive archive ... -
优盘linux启动
2016-11-22 12:57 816优盘linux启动 条件: 1.优盘已做成启动盘; 2在硬盘上 ... -
Linux和DOS的FORMAT命令区别
2016-11-21 14:04 778Linux和DOS的FORMAT命令区别 DOS的FORMAT ... -
Linux /proc 目录下文件粗谈
2016-11-21 13:42 599Linux /proc 目录下文件粗谈 /proc目录下文件是 ... -
1、如何做好嵌入式Linux学习前的准备?
2016-11-18 11:25 4751、如何做好嵌入式Lin ... -
忘记Linux密码怎么办
2016-11-17 14:57 530如果忘记了Linux密码, ... -
Linux文件系统被破坏时的处理方法介绍
2016-11-17 14:46 1061Linux文件系统被破坏时的处理方法介绍 当文件系统被破坏时, ... -
如何学习linux的建议
2016-11-16 13:53 473如何学习linux的建议 一、从基础开始 常常有些朋友在L ... -
Linux系统配置优化的几个经验
2016-11-16 11:53 486Linux系统配置优化的几个经验 关于硬盘分区 小编的经验是安 ... -
Linux增加:重要的Shell环境配置文件
2016-11-15 13:42 476用户登录Linux系统后,通常接触的第一个软件环境就是bash ... -
linux下使用Win Modem
2016-11-15 11:50 513inux下使用Win Modem 我是一名Linux爱好者, ...
相关推荐
为了适应这一趋势,提供更加稳定与高效的操作环境,一个名为“达妙电机”的团队开发了一套基于Linux平台,使用C语言编写的电机控制驱动库增强版。 这款驱动库增强版主要针对Linux操作系统下的电机控制应用进行了...
最近看了intel在linux内核中的驱动,学习到了一个非常有用的小技巧,如下代码: #define IN #define OUT #define UAdress volatile unsigned int * #define Raw_buffer void * void SetHwiPortsDataReg(IN UAdress ...
在Linux中,C语言通过socket API实现TCP/IP通信。在这个场景中,`tfservers.c`是服务器端的代码,而`tfclient.c`是客户端的代码。 4. **文件传输**:文件传输通常基于TCP协议,因为TCP提供了一种可靠的数据传输方式...
在"void 指针的妙用"这个主题中,我们主要探讨的是`void`指针在链表实现中的应用,特别是在阅读操作系统如uC/OS-II的源码时所体现的优势。 链表是一种动态数据结构,它由一系列节点组成,每个节点包含数据和指向下...
作者详细记录了使用Linux命令如top、cat /proc/cpuinfo、lscpu、cat /proc/meminfo、free、df、vmstat、iostat、sudo fdisk -l、du、ifconfig、ping、netstat、nslookup、route、arp -a、mtr等,以获取和查看系统中...