1.static
1.1在全局变量前加static关键字,使此全局变量局限在当前文件.
2.const
3.函数指针 指针函数
函数指针是指向函数的指针变量,因而函数指针本身首先应是指针变量,只不过该指针变量指向函数。
C在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。可用该指针变量调用函数。
函数指针有两个用途:调用函数和做函数的参数。
int func(int x); /* 声明一个函数 */
int (*f) (int x); /* 声明一个函数指针 */
f=func; /* 将func函数的首地址赋给指针f */
函数名func代表函数的首地址。
int max(int x, int y){ return (x>y?x:y);}
定义函数指针类型:
typedef int (*fun_ptr)(int,int); //fun_ptr 是返回值是int,参数类型为(int,int)的函数的指针。
申明变量,赋值
fun_ptr max_func=max;
指针函数是返回值为指针的函数。
上面的 int (*f) (int x); /* 声明一个函数指针 */ 引申,如果声明成 int* f(int x);应该就是指针函数了。
const RIL_RadioFunctions *(*rilInit)(const struct RIL_Env *, int, char **);
rilInit = (const RIL_RadioFunctions *(*)(const struct RIL_Env *, int, char **))dlsym(dlHandle, "RILCore_Init");
4. dlopen() dlsym()
5.定义结构体类型
struct RIL_Env{
int *p_request_cardID;
void (*OnRequestComplete)(RIL_Token t, RIL_Errno e, void *response, size_t responselen);
void (*OnUnsolicitedResponse)(int unsolResponse, const void *data, size_t datalen);
void (*RequestTimedCallback) (RIL_TimedCallback callback, void *param, const struct timeval *relativeTime);
void (*OnUnsolicitedResponseId)(int unsolResponse, const void *data, size_t datalen, int respCardId);
}
定义结构体变量
static struct RIL_Env s_rilEnv = {
&request_card_id_rild,
RIL_onRequestComplete,
RIL_onUnsolicitedResponse,
RIL_requestTimedCallback,
RIL_onUnsolicitedResponseId
};
6.pthread_attr_init pthread_attr_setdetachstate
查看:http://zh.wikipedia.org/wiki/POSIX_Threads
编译例子 gcc thread.c -o thread -lrt
7. socket_local_client
http://www.netmite.com/android/mydroid/system/core/libcutils/socket_local_client.c
8. cfsetispeed
http://book.51cto.com/art/200711/59758.htm
9. getopt
while(-1 != (opt = getopt(argc, argv, "p:d:s"))){
switch(opt){
case 'p'
s_port = atoi(optarg);
printf("s_port = %d", s_port);
break;
}
}