我有一个控制台程序
有以下几个文件,其代码如下
a.h
#ifndef A_H
#define A_H
int Sub(void);int a=10; //注意,声明了a就是这家伙,注释掉就没有问题
#endif //A_Ha.cpp
#include "a.h"
int Sub(void)
{
return 0;
}b.h
#ifndef B_H
#define B_Hint Add(int);
#endif //B_Hb.cpp
#include "iostream.h"
#include "a.h"
#include "b.h"
int Add(int A)
{
return 0;
}
void main(void)
{
int a=Sub();
}一编译就出现
b.obj : error LNK2005: "int a" (?a@@3HA) already defined in a.obj
Debug/deletezsf.exe : fatal error LNK1169: one or more multiply defined symbols found
Error executing link.exe.怎么改正呢?????
有以下几个文件,其代码如下
a.h
#ifndef A_H
#define A_H
int Sub(void);int a=10; //注意,声明了a就是这家伙,注释掉就没有问题
#endif //A_Ha.cpp
#include "a.h"
int Sub(void)
{
return 0;
}b.h
#ifndef B_H
#define B_Hint Add(int);
#endif //B_Hb.cpp
#include "iostream.h"
#include "a.h"
#include "b.h"
int Add(int A)
{
return 0;
}
void main(void)
{
int a=Sub();
}一编译就出现
b.obj : error LNK2005: "int a" (?a@@3HA) already defined in a.obj
Debug/deletezsf.exe : fatal error LNK1169: one or more multiply defined symbols found
Error executing link.exe.怎么改正呢?????
解决方案 »
- 再开新帖,如何在基于对话框的工程中添加状态栏与工具栏,并实现工具栏动态提示?
- 关于MessageBox的问题
- 貌似 CSoapWininetClient 有句柄泄露,哪位高人确认一下?
- 消息映射比虚拟函数好在哪?
- 200分:求 WTL 下使用CTreePropertySheet的例子或改编或思路?帮顶给分。
- 字符转换十六进制
- 哪里有Microsoft的MSDN最新的Knowledge base帮助文档可以下载?
- Socket ip 地止解析问题 (SPI拦截)
- SDI切分窗口问题
- vc6.0中计算的1个非常奇怪的现象!
- 我把一个类做成了DLL后,在别的程序中该怎么样定义这个类的对像呀?显示调用
- IHTMLElement->put_innerHTML无法正确显示<Object >...</Object>
在a.h中写:extern int a;
在a.cpp中写:int a::a;这样就定义成全局变量了。
一个变量是声明,
必须同时满足两个条件,否则就是定义:
(1)声明必须使用extern关键字
(2)不能给变量赋初值
所以,
下面的是声明:
extern int a;
下面的是定义
int a;
int a = 0;
extern int a =0;