底层软件开发小白(励志在底层领域有所建树,养家糊口同时望能为国家贡献一份力)记录工作过程中自己不懂的相关知识,一来可以加强自己的记忆提高自己,二来希望能给相关的底层开发同仁一点帮助。如有错误的地方帮忙指出,谢谢。
现在刚接触项目,只能遇到不会的地方记录下来,没有逻辑关系,等一段时间再统一整理。
1 static inline函数
头文件中常见static inline,用于定义函数
引入内联函数的目的是为了解决程序中函数调用的效率问题,内联函数用于函数体小,引用频繁的函数放到头文件中,节省调用函数时需要的保护现场和恢复现场,用空间换时间。
2. static修饰变量和函数
A.c源文件中
char a = 'A'; // global variable
void msg()
{
printf("Hello\n");
}
main.c源文件中
int main(void)
{
extern char a; // extern variable must be declared before use
printf("%c ", a);
(void)msg();
return 0;
}
运行结果:A Hello
所有未加static前缀的全局变量和函数都具有全局可见性,其它的源文件也能访问——访问方法(1)在一个头文件中说明,要使用这些函数的源文件要包含这个头文件(2)在其他使用这个全局函数的源文件中,用extern先声明这个函数再使用。
而对于内部函数应该在当前源文件中说明和定义。使用内部函数的好处是:不同的人编写不同的函数时,不用担心自己定义的函数,是否会与其它文件中的函数同名。
对于函数来讲,static的作用仅限于隐藏,而对于变量,static还有下面两个作用:
(1) 保持变量内容的持久,只初始化一次
(2)默认初始化为0,字符默认初始化为'\0'
局部变量按照存储形式来分,分为auto,static,register
首先从内存