1、atexit的 用法
#include <stdlib.h>
int atexit(void (*function)(void));
void fd()
{
printf(“I am in A\n”);
}
void fd1()
{
printf(“I am in B\n”);
}
int main()
{
atexit(fd);
atexit(fd1);
return 0;
}
系统会在函数执行完main函数之后 执行这两个函数,*并且执行的顺序 与注册的顺序是相反的 ,所以代码输出结果如下:
I am in B
I am in A
2、宏定义的使用
1、使用宏定义定义一个公式。例如:
#define SQR(x) (x*x)
需要注意的是,如果调用函数int a=3 SQR(a+2),
这里的结果不是 5*5 而是3+2*3+2;是11;所以写函数的时候 要写成
#define SQR(x) ((x)*(x));系统不会自动把公式圈起来的。
2、宏参数的链接
#define STR(s) #s
#define CONS(a,b) (int)(a##e##b)
这里定义的两个宏。意思分别是
1、s是一个字符串 #的意思是 这个S是一个字符串。
2、## a,b是链接两个参数的 例如调用CONS (3,5)那么这个函数就是3e5那么就300000.
3、如何得到一个字的高低8字节:代码如下
#define SQR(x) ((bytes)((word)(x)&&255))
#define SQR(x) ((bytes)((word)(x)>>8));
3、static
1、static有什么作用
1、在函数体内,修饰一个静态变量,在调用这个变量时保持其值不变。
2、在模块内,(但在函数体外),用static函数修饰的变量,可以被模块内所有函数访问,但不能被模块外其他函数访问,它是一个本地的局部变量。
3、在模块内,一个被声明为静态的函数只可被这一个模块内的函数调用。那就是这个函数被限制在声明它的模块内使用
2、static 全局变量与普通的全局变量有什么区别
全局变量的说明之前加上static就是静态全局变量,全局变量和静态全 局变量也是静态存储方式,但是用了static修饰以后,如果有几个源文 件组成,那么就只能在 定义的源文件组成,但是如果不用static修饰那 么 就能够被所有源文件使用。用static修饰,就会避免在其他源文件中 引起错误。
本文详细介绍了C语言中的atexit函数用法、宏定义的注意事项及static关键字的作用,并通过实例展示了这些特性的实际应用。
1608

被折叠的 条评论
为什么被折叠?



