由于工作需要阅读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
};
很有意思吧,注意要在结构体成员前面加 “ . ”哦