打印

extern相关问题

[复制链接]
1005|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gxgclg|  楼主 | 2012-4-22 19:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
关于extern的几道题目


题目1:为什么变量i编译错,请指出以下解释有什么不妥之处:

对于extern声明的全局变量,声明之后,只会在整个exe中保留一份,

a.cpp包含了a.h,即告诉了 a模块变量i是来自外部模块。 同理:在main模块中,

变量i告诉了main模块,变量i来自外部模块。 对于函数fun也是同样解释。



代码:

a.h

extern
int i;

extern
void fun();

a.cpp


#include
"stdafx.h"
#include
"a.h"
void fun()
{
    i
++;
}

main.cpp



int main()
{
   
extern
void fun();
   
extern
int i;

    i
=2;
    fun();
   
return
0;
}


题目2:

把a.h 中的
extern
int i; 改成:int i, 为什么编译没有错误。请指出原因。

相关帖子

沙发
gxgclg|  楼主 | 2012-4-22 19:20 | 只看该作者
题目3:extern float f;  请问这句代码是否被定义了?

如果代码为:

static float f; 呢,又如何??

使用特权

评论回复
板凳
无冕之王| | 2012-4-22 19:42 | 只看该作者
先分清定义和声明

使用特权

评论回复
地板
txcy| | 2012-4-22 22:14 | 只看该作者
代码中i一直没定义,因为extern int i只是告诉编译器在某个地方定义i,并不定义,则编译器会去找i的定义。。。。但却找不到。。。因为你没定义。怎么可能找到。。。。所以编译出错。。。

使用特权

评论回复
5
yybj| | 2012-4-22 22:22 | 只看该作者
1.extern只是声明,不是定义,必须在工程的其它源文件中定义
2.是因为你只在本文件中使用i,i是普通全局变量
3.用static修饰就是定义了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

177

主题

1653

帖子

1

粉丝