标识符的链接属性

链接属性

函数在使⽤的时候可能在不同的源⽂件中,每个源⽂件单独编译完成之后⽣成对应的⽬标⽂件,所有的⽬标⽂件以及那些从⼀个或者多个函数库中引⽤的函数,链接在⼀起形成了可执⾏程序。那相同的⼏个标识符出现在⼏个不同的源⽂件中,如何对待他们?标识符的链接属性决定了如何处理。

链接属性分为:

  • 外部链接属性
  • 内部链接属性
  • ⽆链接属性

 


 

外部链接属性:全局标识符具有外部链接属性。⼀个标识符,不仅可以在当前源⽂件使⽤。使用extern 的声明可以在其他源⽂件使⽤。

//add.c源⽂件
int Add(int x, int y)//具有外部链接属性
{
 return x+y;
}
int g_val = 2016; //具有外部链接属性


//test.c源⽂件
#include <stdio.h>
extern int Add(int, int);
extern int g_val;
int main()
{
     int a = 10;
     int b = 20;
     int ret = Add(a, b);
     printf("g_val = %d\n", g_val);
     return 0;
}

 

内部链接属性:具有外部链接属性的的标识符如果前⾯加上⼀个 static 关键字修饰就会变成内部链接属性。

//add.c源⽂件
static int Add(int x, int y)//具有内部链接属性
{
 return x+y;
}
static int g_val = 2016; //具有内部链接属性


//test.c源⽂件
#include <stdio.h>
extern int Add(int, int);
extern int g_val;
int main()
{
     int a = 10;
     int b = 20;
     int ret = Add(a, b);
     printf("g_val = %d\n", g_val);
     return 0;
}
//运行会报编译错误

 

⽆链接属性:局部变量是⽆属性的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值