从FreeBSD源码中看到的东西
2014-08-26 11:54
162 查看
由于工作需要阅读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
};
很有意思吧,注意要在结构体成员前面加 “ . ”哦
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
};
很有意思吧,注意要在结构体成员前面加 “ . ”哦
相关文章推荐
- Net程序集混淆加密保护(自己辛辛苦苦搞出来的dll,居然可以很容易的被看到源码!不采取行动行吗!)
- 今天上qq空间看到一个有意思的东西,类似射线的效果
- 怎么在Myeclipse中看到你想要看到的源码
- Linux源码包里有个scripts文件夹,里面放的东西起什么作用?
- 从SDP中至少要看到那些东西?
- 今天在《Exceptional C++》上看到的两个有意思的东西
- 关于android屏幕适配的问题(drawable-xxxxxxxx,dp,sp,px等等),偶尔看到了android源码,关于dpi的区分的值
- libevent库源码学习-kqueue( freebsd)
- 新手在js里面看到$符号,很奇怪,啥东西
- Android-PullToRefresh的用法 及源码中你应该知道的一些东西
- android debug时如何看到导入的jar包的源码?
- 解决eclipse 卡的问题,并且可以看到JDK源码
- [转贴]CSDN上看到的搞笑东西
- 用iE查看看到的源码和火狐查看到的源码,360查看的源码为什么不一样,求助!!!
- 看到的不明白的东西,高人路过指点
- 发布两个东西源码
- 翻看谷歌源码 那些让人感兴趣的东西--WebView如何申请授权
- 看到刷机的东西就冲动,过年的时候把psp刷坏了,以后找台路由器刷着玩
- 研究UEVENT相关东西,看到2篇优秀的博文,转载与此
- (看到的较为实用的东西转一下)宽字符处理函数函数与普通函数对照表