c语言中static修饰函数的方法及代码
作者:小妮浅浅 时间:2023-08-26 15:46:21
1、静态函数只能在声明它的文件中可见,其他文件不能引用该函数。
2、不同的文件可以使用相同名字的静态函数,互不影响。
3、使用static声明的函数不能被另一个文件引用。
实例
/* file1.c */
#include <stdio.h>
static void fun(void)
{
printf("hello from fun.\n");
}
int main(void)
{
fun();
fun1();
return 0;
}
/* file2.c */
#include <stdio.h>
static void fun1(void)
{
printf("hello from static fun1.\n");
}
/*
输出:
error:file1.c:(.text+0x20):对‘fun1'未定义的引用
collect2: error: ld returned 1 exit status
*/
知识点扩充:
在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。
介绍它的第一条也是最重要的一条:隐藏。
当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c。
下面是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
来源:https://www.py.cn/other/jiaocheng/34073.html
标签:c语言,static,修饰函数
0
投稿
猜你喜欢
postman测试传入List<String>参数方式
2022-10-13 01:34:40
C#的TimeSpan案例详解
2023-11-20 11:34:52
C#实现虚拟键盘的实例详解
2021-09-21 08:59:47
C#使用伪随机数实现加密用户密码的方法
2023-06-27 05:27:56
Android设置theme中可能遇到的坑
2021-08-05 06:20:26
C#词法分析器之构造NFA详解
2022-04-10 02:11:43
Spring JPA整合QueryDSL的示例代码
2022-12-02 18:56:22
Android自定义控件实现时间轴
2021-07-12 04:13:08
java调用oracle分页存储过程示例
2021-06-08 12:44:16
Java并发之嵌套管程锁死详解
2023-01-13 10:55:01
妙解Java中的回调机制(CallBack)
2022-07-15 15:25:31
java中同类对象之间的compareTo()和compare()方法对比分析
2023-08-15 09:56:57
C#使用doggleReport生成pdf报表的方法
2022-12-29 14:55:28
C#使用Process类调用外部exe程序
2023-02-12 16:54:20
Java调用明华RF读写器DLL文件过程解析
2022-12-17 04:31:06
SpringBoot 将配置文件挂到 jar 包外面的操作方法
2023-11-17 11:09:32
Java中的StringUtils引入及使用示例教程
2023-01-10 20:01:04
AjaxControlToolkit AjaxFileUpload 显示英文改成中文的解决方法
2021-06-01 21:09:57
Unity Shader实现径向模糊效果
2021-09-06 01:02:47
Spring生命周期回调与容器扩展详解
2023-04-05 16:26:31