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
  • asp之家 软件编程 m.aspxhome.com