| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 694 人关注过本帖
标题:问一个关于extern的使用问题!
只看楼主 加入收藏
lxsbupt
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2007-11-23
收藏
 问题点数:0 回复次数:1 
问一个关于extern的使用问题!
[root@localhost parta]# cat parta.c
#include <stdio.h>

void report_count();
void acculate(int k);

int count=0;    //具有外部作用域的静态变量;

int main(void)
{
        int value;         //自动变量;
        register int i;    //寄存器变量;

        printf("Enter a positive integer(0 to quit):");
        while(scanf("%d",&value)==1&& value>0)
        {
                ++count;
                for(i=value; i>=0; --i)
                {
                        acculate(i);
                }
                printf("Enter a positive integer(0 to quit):");
        }

        report_count();
        return 0;
}

void report_count()
{
        printf("Loop executed %d times\n",count);
}

[root@localhost parta]# cat partb.c
#include <stdio.h>

extern int count;           //外部变量的引用声明;
static int total=0;         //具有内部作用域的静态变量;

void acculate(int k)
{
        static int subtotal=0;  //具有代码块作用域的静态变量;

        if(k<=0)
        {
                printf("Loop cycle: %d\n",count);
                printf("subtotal: %d;total: %d\n",subtotal,total);
        //      subtotal=0;
        }
        else
        {
                total+=k;
                subtotal+=k;
        }
}
在partb.c的第三行
extern int count;           //外部变量的引用声明;
我把extern去掉之后,运行结果和有extern是一样的,这是为什么阿???
搜索更多相关主题的帖子: extern 
2008-01-26 11:01
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1705
专家分:4345
注 册:2007-12-27
收藏
得分:0 
当然是因为gcc默认认为你这种用法的意思是两个文件里面的count变量是同一个,所以没有extern它也理解成有extern一样。

但是,其他编译器不一定怎样处理这个现象。
2008-01-26 12:01
快速回复:问一个关于extern的使用问题!
数据加载中...
 
   



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

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