C 语言
基础
gcc -E helloworld.c -o helloworld.i
图源未知
http://gcc.gnu.org/onlinedocs/cpp/Macros.html
函数指针
c语言里,数据存放的地方由指针/内存决定,数据大小由类型决定
也就是说 (地址值)数据所在起始点+(类型)数据大小,共同组成了c语言的数据
前置知识:
(void *) 是通用数据类型,表示只有地址 即数据起始点,而数据大小为0。目的是方便使用时直接类型转换。如 声明void * p; 当使用 int_data = *((int *)p) 时,即可把p的数据按照int格式(数据大小为32bit)读出来。 char_data = *((char *)p); 即把p按照char 的格式读出来。在需要操作时进行任意类型转换,这样就实现了通用。
Linux2.6 里的函数指针用法
这是一个函数指针, ((void (*) (入参类型1,入参类型2,入参类型n)) 函数名)
调用时候是 指针(参数1,参数2,参数n);
可以是
tmp->free(addr, dummy);
或者不使用free这个成员,而直接使用该指针: ((void (*) (参数1,参数2,参数n)) 函数名)(参数1,参数2,参数n);
((void (*)(void *, int)) my_free_page)(addr, dummy);
关于函数指针,C Primer Plus 第五版中文版的 14.14 函数和指针 有提到
若有误,请指正!!!
三目运算符
x?:y
等价于
x?x:y
VC++版的c
C语言是微软家的第二 公 民,但由于开发Windows程序也需要和微软打交道,所以...
推荐第三方库
简单的:
Mongoose 用c写web服务器、DNS服务等等,可用这个库
复杂的:
Npcap 可操作底层数据包的网络库
--------蓝天上的云_转载请注明出处.