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

来源:互联网 发布:列车时刻表软件哪个好 编辑:程序博客网 时间:2024/06/06 01:51

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 是个不错的方法~





0 0
原创粉丝点击