首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

使用关键字 extern 导致的链接异常怎么解决

2012-01-18 
使用关键字 extern 导致的链接错误如何解决?/*****************************************//*main.c*//****

使用关键字 extern 导致的链接错误如何解决?
/*****************************************/
/*   main.c                                                                 */
/*****************************************/
#include   "stdio.h "
#include   "mydefine.h "
main()
{
int   s,   i   =   100;
s   =   sum1ton(i);
printf( "s=%d ",   s);
}
/*****************************************/


/*****************************************/
/*   mydefine.c                                                         */
/*****************************************/
int   n   =   100;
int   sum1ton(int   n);

int   sum1ton(int   n)
{
int   s   =   0,   i;
for   (i   =   0;   i   <   n;   i++)
s   +=   i;
return   s;
}
/*****************************************/


/*****************************************/
/*   mydebug.h                                                           */
/*****************************************/
extern   int   n   =   100;
extern   int   sum1ton(int   n);
/*****************************************/


上述三个文件,在VC++6.0下编译(当然是三个文件都加入工作区),怎么会出2个连接错误:
Linking...
main.obj   :   error   LNK2001:   unresolved   external   symbol   _sum1ton
Debug/main.exe   :   fatal   error   LNK1120:   1   unresolved   externals
Error   executing   link.exe.

main.exe   -   2   error(s),   0   warning(s)

请问这是为什么?该如何解决?
谢谢!



[解决办法]
将extern int n = 100;
extern int sum1ton(int n);
放到mydebug.c里
[解决办法]
/*****************************************/
/* mydefine.c */
/*****************************************/
extern int n = 100;

int sum1ton(int n)
{
int s = 0, i;
for (i = 0; i < n; i++)
s += i;
return s;
}
/*****************************************/


/*****************************************/
/* mydebug.h */
/*****************************************/
int n;
int sum1ton(int n);
/*****************************************/

[解决办法]
...
你在 main.c 里面 #include "mydefine.h "
可是你声明 extern int sum1ton(int n); 的那个头文件叫 mydebug.h

[解决办法]
正确答案在这里....


变量的申明和赋值都应该在CPP文件里面

比如
//hello.cpp
int hello = 10;

然后需要引用此变量的地方,无论CPP还是H文件,都应该如下格式


extern int hello;
不能赋值.

[解决办法]
/*****************************************/
/* mydefine.c */
/*****************************************/
int n = 100;

int sum1ton(int n)
{
int s = 0, i;
for (i = 0; i < n; i++)
s += i;
return s;
}
/*****************************************/


/*****************************************/
/* mydebug.h */
/*****************************************/
extern int n;
int sum1ton(int n);
/*****************************************/

热点排行