c语言static函数的链接属性,C语言external-internal-none链接属性浅析

用代码说明:

///myfun.c文件///

int b = 123; ①

int out_c = 315;

static double PI=

3.14159; //myfun.c文件以外的文件是不能访问PI变量的

int Add(const int first,

const int second)

{

return first + second;

}

//End myfun.c file

/test.c

文件///

#include ..

int

b;② //等价于extern int

b;即定义在myfun.c中的变量b

//最好写成extern int b;易于理解,这种简写模式只适用于全局作用域

//对于函数作用域是不能简写的,否则成了定义函数的局部变量。

int main(void)

{

extern int

b;③ //external(外部链接)属性的b,其作用域起于此声明处止于语句④之前

printf("%d\n",b); //输出:123

//函数的局部变量,链接属性为none;④处的变量b会屏蔽掉③处的变量b,

int b = 456;

//④处变量b的作用域起于其定义处,止于函数结束

printf("%d",b); //输出: 456

extern int

b;⑤

//编译器将extern

int b解析成:在已经定义的int b = 456

(④)基础

//上加了一个extern属性。C规定:在已经定义变量上加任何链接属性都不

//会改变变量的原链接属性。给b上加extern属性并不会使none链接属性变

//成extern链接属性。

printf("%d",b); //所以输出: 456

extern int

out_c;//绝对不能简写成int out_c;否则是定义函数作用域的变量

printf("%d",out_c); //输出:315

return

0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值