c语言的static用作函数链接限制

c++ 中可以使用 namespace 来避免同名引发的错误,而c语言的大型项目中要做到这一点,就有点难度了,通常会使用static来修饰函数。

static 修饰函数声明时,表示该函数只用于本文件的调用范围。效果见下面的小例子:


情况1:

××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

a.h :

#ifndef A_H_

#define A_H_

#include<stdlib.h>

#include<stdio.h>

static void func_print( int a );

#endif 

×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

b.c:

#include<stdlib.h>

#include<stdio.h>

void func_print(int a )

{

  printf("2222  a = %d ", a);

}

×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

a.c :

#include"a.h"

void func_print(int a )

{

  printf("1111  a = %d ", a);

}

void main(void)

{

int a = 10;

func_print(a);

}

××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

输出结果为: 1111  a = 10


情况2:

××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

a.h :

#ifndef A_H_

#define A_H_

#include<stdlib.h>

#include<stdio.h>

static void func_print( int a )

{

  printf("1111  a = %d ", a);

}


#endif 

×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

b.c:

#include<stdlib.h>

#include<stdio.h>

void func_print(int a )

{

  printf("2222  a = %d ", a);

}

×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

a.c :

#include<stdlib.h>

#include<stdio.h>

extern  void func_print(int a);

void main(void)

{

int a = 10;

func_print(a);

}

××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××

输出结果为: 2222 a = 10


本人在解码库中会遇到各种同名的函数,弄个长长的名字来避免链接错误感觉忒别扭。使用static 是个不错的方法~





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值