函数名前加static的作用

您所在的位置:网站首页 哄哄前面加一个字叫什么成语 函数名前加static的作用

函数名前加static的作用

2023-12-04 12:27| 来源: 网络整理| 查看: 265

static

先思考一个问题,static修饰一个变量的作用是什么?

它的名字叫做局部静态变量或者全局静态变量,那这个变量到底可以干什么?它有一个作用就是为了让该变量只在自己的编译单元中可见。对于外部文件不可见。 编译单元是什么?

举个例子吧: 现在有一个1.h 文件 内部定义了全局静态变量 static int a = 1; 然后有一个1.c文件包含了1.h, 那这个1.c就可以使用这个a变量。 但是现在我们又有一个2.c文件(没有包含1.h文件),它的内部用extern int a; 声明了a。 然后我们用Makefile将这些文件整合在一起,在make的时候就会报错,2.c 对“a”未定义的使用,在链接的时候虽然a是全局的变量,但是用static进行了修饰,它们不属于一个编译单元,所以会产生报错。

我们可以通过这个例子理解一下编译单元的概念 ,该例子中1.h 1.c是一个编译单元 , 2.c是一个编译单元。

理解了编译单元和static对于变量修饰的作用之后其实static对于函数的修饰和对变量的修饰作用差不多。

staic修饰函数

我们只说全局的函数,不说类中的static函数。 全局函数被static修饰了之后,该函数也就只在编译单元中可见,对于外部文件不可见。理由和上述修饰变量一样。我们用代码给大家举个例子

test1.cpp文件 #include static int setnonblocking(int fd) { std::cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3