azure 不要再搞错了

[ 2005-12-03 20:23:36 | 作者: Admin ]
字体大小: | |
尽管你已经使用了

#ifndef _A
#define _A


class A
{
public:
  void Print(char* text);
};

int i;

#endif

但还是出现这样的错误!!!!
Linking...
print1.obj : error LNK2005: "int i" (?i@@3HA) already defined in main.obj
print1.obj : error LNK2005: "int i" (?i@@3HA) already defined in main.obj
Debug/abc.exe : fatal error LNK1169: one or more multiply defined symbols found
Error executing link.exe.

主要是你没有搞清楚一个问题, redeclare & redefine
#ifndef #define #endif 只能防止 redeclare,
若多次引用 此头文件, int i 不是被定义了多次吗, 肯定出错啊!

所以我们在被多次引用的头文件里面使用全局变量一定要加 extern

extern int i;

不要再搞错了!
评论Feed 评论Feed: http://www.azure.com.cn/feed.asp?q=comment&id=164

这篇日志没有评论.

此日志不可发表评论.
ħ˽ ħ˽