请各位高手进来帮小弟一下吧,谢谢啦,谢谢啦!!!!!!!!!!!!!!!!

longhaihai 2007-06-16 11:06:57

我对于extern关键字的用法,不能够理解,我的理解是:编译器为了区分同名的不同函数,采用生成内部函数名的方法来解决这个问题.(既"名字混成").但用了extern修饰函数定义之后,便不采用了"名字混成"的做法.既然这样那么在main函数中定义这两个函数也不会矛盾了,但编译器提示出错,如下:
void main(int argc, char* argv[])
{
int qq(int i)
{ return 100; }
extern int qq(int i)
{ retrun 200; }
}
...全文
203 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
expter 2007-06-17
en
回复
nevergone 2007-06-17
不知道LZ写什么代码
回复
longhaihai 2007-06-17
int qq(int i)
{ return 100; }
extern "C" int qq(int i)
{ retrun 200; }
void main(int argc, char* argv[])
{

}
对不起应当为上面的才对。
回复
mfkdyq 2007-06-17
楼上说的对,那时函数里面定义函数。
回复
huashizhixin 2007-06-17
void main(int argc, char* argv[])
{
int qq(int i)
{ return 100; }
extern int qq(int i)
{ retrun 200; }
}
这是什么用法?
函数里面定义函数?
回复
Vitin 2007-06-17
LZ说不使用"名字混成",指的是 extern "C" ,因为C语言是不使用名字混成的。
如:
extern "C" int qq(int i)
{ retrun 200; }

在编译器内部仍然是qq之类的名字。


int qq(int i)
{ retrun 200; }
在编译器内部是类似qq_rint_pint的东东,要包含返回值类型和参数类型的信息。

但是,即使一个加extern "C",一个没有加,这样的代码也是无法编译的。
因为当函数原型一样时,如果被调用了,应该判定是哪一个被调用了呢?
所以它固然不造成链接冲突,但是造成了二义性,还是不行的。
回复
newkt 2007-06-17
//这是一个函数的定义
int qq(int i)
{
return 100;
}
//由于给了函数体,所以即使加上extern ,这也是一个函数的定义
extern int qq(int i)
{
retrun 200;
}

//------------------------------------------------------------------------

在同一个作用域内,变量、函数可以声明多次,但只能定义一次。

extern 关键字是用来表示声明的。

例如:
//以下是定义一个变量a
int a;
int a=0;
extern int a=0; //如果声明的时候带上了初始值,那么这就不是声明,而变成定义了
//以下是声明一个变量a
extern int a;
//------------------------------------------------------------------------
回复
cunsh 2007-06-17
楼主换个书啊.
回复
longhaihai 2007-06-17
天啊,老大们,我说的是c++啊不是c 语言,
回复
mymtom 2007-06-16
不知道楼主从哪本书看来的,
extern 表示一个变量的存储空间和初始值,或者一个函数的函数体是在其它地方定义的。
例如:
在main.c中:
/* 申明全局变量g_mode和函数add, sub */
extern g_mode;
extern int add(int x, int y);
extern int sub(int x, int y);

在tools.c中:
/* 定义两个函数add */
int add(int x, int y)
{
return (x + y);
}

/* 定义两个函数sub */
int sub(int x, int y)
{
return (x - y);
}

在 global.c 中
/* 申明全局变量g_mode */
int g_mode = 0;
回复
相关推荐
发帖
C++ 语言
创建于2007-09-28

6.0w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
申请成为版主
帖子事件
创建了帖子
2007-06-16 11:06
社区公告
暂无公告