鱼C论坛

 找回密码
 立即注册
查看: 1849|回复: 6

关于external的用法

[复制链接]
发表于 2016-11-2 23:31:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
/*
题目:学习使用 external 的用法。
*/

#include<stdio.h>

int a,b,c;

void add()
{
        int a;
        a=3;
        c=a+b;
}

void main()
{
        a=b=4;

        add();

        printf("The value of c is equal to %d \n", c );
}


此题是“C语言经典例题”里的一道题目,但题目里明明没有看到关于external的用法,不知是我没有看明白,还是什么原因,各位明白题目意思的“鱼友”们,欢迎补充......................................

期待中...........................
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-11-3 04:04:15 | 显示全部楼层
恰好今天讲到了 external,不妨可以看一下 -> http://blog.fishc.com/5135.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-3 04:05:52 | 显示全部楼层
链接属性是个什么东西呢?

我们知道大型的程序都有好些个源文件构成,那么在不同文件中的同名标识符,编译器是如何处理的呢?这就要看链接属性了。


在C语言中,链接属性一共有三种:
  • external(外部的)—— 多个文件中声明的同名标识符表示同一个实体
  • internal(内部的)—— 单个文件中声明的同名标识符表示同一个实体
  • none(无)—— 声明的同名标识符被当作独立不同的实体

默认情况下,具备文件作用域的标识符拥有 external 属性。也就是说该标识符允许跨文件访问。对于 external 属性的标识符,无论在不同文件中声明多少次,表示的都是同一个实体。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-3 09:14:36 | 显示全部楼层
小甲鱼 发表于 2016-11-3 04:05
链接属性是个什么东西呢?

我们知道大型的程序都有好些个源文件构成,那么在不同文件中的同名标识符,编 ...

个人认为此题中只涉及到了全局变量和变量的作用域,并没有关于external的用法。

或者是我的认识有些肤浅?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-3 09:15:15 | 显示全部楼层
小甲鱼 发表于 2016-11-3 04:05
链接属性是个什么东西呢?

我们知道大型的程序都有好些个源文件构成,那么在不同文件中的同名标识符,编 ...

个人认为此题中只涉及到了全局变量和变量的作用域,并没有关于external的用法。

或者是我的认识有些肤浅?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-11-3 09:16:36 | 显示全部楼层
小甲鱼 发表于 2016-11-3 04:04
恰好今天讲到了 external,不妨可以看一下 -> http://blog.fishc.com/5135.html

哇!哇!哇!

小甲鱼老师的回复,好激动......................
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-11-3 09:20:32 | 显示全部楼层
上面不是定义了3个全局变量a,b,c么,然后你在创建一个.cpp,在这个新的.cpp里面去引用这3个全局变量,试着在新的.cpp里面改变他们的值,看看main()中的打印会不会有变化。
external的核心就是跨文件引用。前缀有external的只是一个写名字的过程,不是创造一个实体的过程。详细的看楼上的回复。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-27 15:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表