GNU C ANSI C 一些区别

本文介绍了C语言中的一些实用技巧,包括使用可变长度数组、宏定义最小值函数、类型安全的宏、结构体成员及数组的初始化方法等。通过这些技巧,可以更高效地进行C语言编程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 可变数据结构

struct var_data

{

    int len;

    char data[0];

};

遍历len后数据

for(i = 0; i < s.len; i++)

{

   printf("%02x",s.data[i]);

}

2 case 范围区间 【x,y】

3 语句表达

#define min_t (type, x, y) /

({  type __x = (x); type __y = (y); __x < __y ? __x: __y;})

 

int ia, ib, mini;

float fa, fb, minf;

 

mini = min_t ( int, ia, ib);

minf = min_f (float, fa, fb);

标准c:

#define min (x, y) ((x) < (y) ? (x) : (y))

 

代码min ( ++ia, ++ib) 被展开为 ((++ia) < (++ib) ? (++ia):(++ib)) ia,ib 被加了两次。

4 typeof

#define min(x, y) ( {/

const typeof(x) __x = (x); /

const typeof(y) __y = (y);/

(void) (&__x ==&__y); /

__x <_ _y ? __x : __y ;})

5 pr_debug 可防止在参数选项不代表任何参数的时候 不输出,。

6 可指定范围初始化数组 unsigned char data [MAX] = { [0 ... MAX - 2] = 0};

结构体成员初始化结构体:

struct file_operations ext2_file_operations =

{

llseek:generic_file_llseek,

read: generic_file_read,

}

同样,标准c:

struct file_operations ext2_file_opreations =

{

.llseek       = generic_file_llseek,

.read         = generic_file_read,

}

.....

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值