C语言static静态函数的用法(附带实例)
C 语言程序中定义一个函数,如果该函数只能被所在的源文件使用,那么就称这样的函数为静态函数。
使用静态函数,可以使函数只局限在函数所在的源文件中,如果在不同的源文件中有同名的静态函数,则这些同名函数间是互不干扰的。
定义静态函数时,要在函数返回值和函数名前面加上关键字 static 进行修饰。一般形式如下:
使用内部函数的好处是,不同开发者编写函数时,不必再担心函数是否会与其他源文件中的函数同名。因为内部函数只在所在源文件中有效,不同源文件中即使有相同的函数名,也没有关系。
【实例】 这个程序包含两个源文件:main.c 和 utils.c:
utils.c:
utils.h:
main.c:
使用静态函数,可以使函数只局限在函数所在的源文件中,如果在不同的源文件中有同名的静态函数,则这些同名函数间是互不干扰的。
定义静态函数时,要在函数返回值和函数名前面加上关键字 static 进行修饰。一般形式如下:
static 返回值类型 函数名(参数列表)例如,定义一个功能为加法运算且返回值是 int 型的静态函数,代码如下:
static int Add(int iNum1,int iNum2)在函数的返回值类型 int 前加上关键字 static,可将原来的函数指定成静态函数。
使用内部函数的好处是,不同开发者编写函数时,不必再担心函数是否会与其他源文件中的函数同名。因为内部函数只在所在源文件中有效,不同源文件中即使有相同的函数名,也没有关系。
【实例】 这个程序包含两个源文件:main.c 和 utils.c:
- 在 utils.c 中定义了一个静态函数 staticAdd 和一个普通函数 Add();
- 在 main.c 中引入 utils.h 头文件,尝试调用这两个函数。
utils.c:
// utils.c #include "utils.h" static int staticAdd(int a, int b) { return a + b; } // 普通函数 int add(int a, int b) { return a + b; }
utils.h:
// utils.h #ifndef UTILS_H #define UTILS_H static int staticAdd(int, int); int add(int a, int b); #endif
main.c:
// main.c #include <stdio.h> #include "utils.h" int main() { int result1 = staticAdd(3, 4); // 调用 utils.c 中的静态函数(错误,因为 staticAdd 在 main.c 中不可见) int result2 = add(5, 6); // 调用 main.c 中的普通函数 printf("Static add: %d\n", result1); printf("Normal add: %d\n", result2); return 0; }在这个示例中,staticAdd() 函数是静态的,只能在 utils.c 文件中被调用。如果我们尝试在 main.c 中调用 staticAdd(),将会编译错误,因为 staticAdd() 在 main.c 中是不可见的。