C语言中static函数

转载自:

https://blog.csdn.net/cw616729/article/details/95003577

https://blog.csdn.net/keyeagle/article/details/6708077

1.含义:

         定义为static的函数,作用域为本文件,它只能在定义该函数的源文件中使用。

2.好处

        使用static的好处是:不同的人编写不同的函数时,不用担心自己定义的函数,是否会与其它文件中的函数同名,因为同名也没有关系。

  1. 其他文件中可以定义相同名字的函数,不会发生冲突
  2. 静态函数不能被工程内其他文件所用。

3.根本原因

根本原因是C语言中同一个工程中不能有同名函数。

当程序中有很多个源文件的时候,有些源文件只提供一些外界需要的接口,其他的函数可能是为了实现这些接口而编写,这些其他的函数你可能并不希望被外界(非本源文件)所看到,这时候就可以用static修饰这些“其他的函数”。

例:file1.c中使用file2.c中定义的静态函数报错

#file1.c
#include<stdio.h>
#include "file2.h"

int main(int argc, char const *argv[])
{
	staticfun();
	normalfun();
	return 0;
}
#file2.h
#ifndef _FILE1_H
#define _FILE1_H

static void staticfun();
void normalfun();

#endif
#file2.c
#include<stdio.h>
#include "file2.h"

static void staticfun()
{
	printf("I am staticfun!\n");
}

void normalfun()
{
	printf("I am normalfun!\n");
}

 

当然在file2.c中自己使用是没有问题的,在file2.c中加上主函数

#include<stdio.h>
#include "file2.h"

static void staticfun()
{
	printf("I am staticfun!\n");
}

void normalfun()
{
	printf("I am normalfun!\n");
}


int main(int argc, char const *argv[])
{
	staticfun();
	normalfun();
	return 0;
}

   

静态函数的声明需不需要放到头文件中?因为它并不是提供给其他函数使用的接口。我想还是需要吧,放到头文件中,对应的自己的源文件可以用。
 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值