| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2754 人关注过本帖
标题:关于extern的具体的用法。
只看楼主 加入收藏
Alien_Lee
Rank: 8Rank: 8
来 自:Linux帝国
等 级:蝙蝠侠
威 望:7
帖 子:149
专家分:739
注 册:2016-7-19
结帖率:83.33%
收藏
已结贴  问题点数:5 回复次数:5 
关于extern的具体的用法。
关于extern的用法我查找了一些资料,但是感觉还不是很理解。
【extern int temp;只是说明temp是一个外部变量,此时并没有定义它,而实际上外部也没有定义,所以编译时提示出错。
extern int temp=0;说明temp是一个外部变量,同时定义了temp为int并初始化,(声明不能初始化)。 】

按照这种理解,下列程序应该运行正确,然而却不然,
程序代码:
#include<stdio.h>
#include<stdlib.h>

void test()
{
    extern int i=0;
}
void main()
{
    test();
    system("pause");
}

如果说extern int i 是为了声明变量为外部,此处没有定义,需要外部寻找,那下面的程序为什么运行出错?
程序代码:
#include<stdio.h>
#include<stdlib.h>

void test()
{
    extern int i;
    i = 0;
}
void main()
{
    int i;
    test();
    system("pause");
}
还有这个,也是出错的:
程序代码:
void test()
{
    extern int i;
    int i = 0;
}
void main()
{
    test();
    system("pause");
}
只有这个是正确的:
程序代码:
#include<stdio.h>
#include<stdlib.h>

void test()
{
    extern int i;
}
void main()
{
    test();
    int i = 0;
    system("pause");
}
是不是说,extern声明的变量只能在外部使用,而在本函数块不能使用?
还是说extern有其他的一些限制?

能不能具体说说extern的具体的用法?
搜索更多相关主题的帖子: 资料 color 
2016-09-13 11:23
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:2 
#include<stdio.h>
#include<stdlib.h>

void test()
{
    extern  int i;
    printf("%d\n",i);
}

int i=10;        //i在此处
int main()
{
    test();
    system("pause");
}
你试试
extern 扩展外部变量的作用域和将外部变量的作用域扩展到其它文件

[此贴子已经被作者于2016-9-13 12:24编辑过]

2016-09-13 12:20
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
收藏
得分:2 
看到的extern一般都是存在于头文件之类的,基本都涉及到了不同文件组合到一个项目时的情景。
程序代码:
//----operation.h
#ifndef Operation_H_
#define Pperation_H_

extern double Pi;

#endif //Operation_H_

//------operation.cpp
#include"operation.h"

double Pi=3.1415926;

//------main.cpp
#include <stdio.h>
#include "operation.h" 

int main ()
{
    printf("%f",Pi);//这样main函数可以使用Pi,
    return 0;
}
main.cpp和operation.h两个文件只要有一个声明了extern double Pi,那么main.cpp就可以正常编译使用了。
extern表示说向程序声明,我有一个变量是double类型,叫做Pi,但是她在哪里我不知道。等你用得着了,你自己去找。这样子在程序编译的时候就可以通过了。
他就像我们写函数的时候会在main()的上面写函数声明一样,主要还是为了避免出现先后次序问题。C也好C++也好,其实到后面都是一个.h搭配一个.c。.h就是用来放函数声明的,有些变量可能是多个函数需要使用到的,但是我又不希望.h当中,因为未来当这个.h被别的文件include的时候这个变量他可能就会有风险,会被撞衫。

你试着打开你所Include的头文件,里面比较多extern





[此贴子已经被作者于2016-9-13 13:01编辑过]


φ(゜▽゜*)♪
2016-09-13 12:42
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1744
专家分:3216
注 册:2015-12-2
收藏
得分:2 
extern在工程中一般这样用:
在1.cpp中定义一个变量,比如:int a;
在head.h文件中extern int a;
然后其它cpp,如2.cpp,3.cpp全部include "head.h"就可以了。
2016-09-13 13:05
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1744
专家分:3216
注 册:2015-12-2
收藏
得分:0 
咋一回发了两个?
2016-09-13 13:05
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
收藏
得分:0 
百度百科
图片附件: 游客没有浏览图片的权限,请 登录注册

φ(゜▽゜*)♪
2016-09-13 13:10
快速回复:关于extern的具体的用法。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023025 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved