从FreeBSD源码中看到的东西

本文介绍在FreeBSD源码中发现的两种有趣的C语言使用技巧:一种是特殊的函数定义方式,允许在函数参数声明前进行类型定义;另一种是结构体成员的指定赋值方法,可以明确地对每个成员进行赋值。

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

由于工作需要阅读FreeBSD的代码,在源码中看到了很多以前没接触过的c语言使用方法,觉得很有意思,记录于此。

1、奇怪的函数定义方式

正统写法:
<函数返回值类型> <函数名> ( <参数类型> <参数>...)
例子:
void func(int val, int data)
{

}

默认情况
函数返回值类型:这个如果不注明的话默认返回int类型,不过有些情况下可能会报错
参数类型+参数:这两个一起不写的话默认是void类型
参数类型:有参数,但不写参数类型,默认参数类型为int

真正特殊的来了
void func(val, data)
int *val;
char *data;
{

}

这种写法是完全正确的,它等同于
void func(int *val, char *data)
{

}


2、有意思的结构体赋值方式

比如这里有一个结构体是这样子定义的

struct class_one

{

    int a;

    int b;

    int c;

};

正常的定义一个变量并赋值是这样的

struct class_one test = {10,100,100};

但其实还能这样定义

struct class_one test =

{

    .a = 10,

    .b = 100,

    .c = 1000

};

很有意思吧,注意要在结构体成员前面加 “ . ”哦


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值