Chinaunix首页 | 论坛 | 博客
  • 博客访问: 336341
  • 博文数量: 67
  • 博客积分: 2485
  • 博客等级: 大尉
  • 技术积分: 665
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-20 17:29
文章分类

全部博文(67)

文章存档

2016年(3)

2013年(5)

2012年(3)

2011年(5)

2010年(35)

2009年(16)

我的朋友

分类: C/C++

2009-09-28 16:30:51

我把所有的全局变量写在一个global.h里,然后其他文件都include 了它 ,于是出现了 multiple   definition   of  .....(编译器 gcc )代码结构
main.cpp
#include "global.h"

WinMain(....)
{
...
}

file_1.cpp
#include "global.h"
....

file_2.cpp
#include "global.h"

...

   
由于工程中的每个文件都是独立的解释的,(即使头文件有#ifndef _x_h ....#enfif   )在其他文件中只要包含了global.h 就会独立的解释,然后生成每个文件生成独立的标示符。在编译器连接时,就会将工程中所有的符号整合在一起,由于,文件中有重名变量,于是就出现了重复定义的错误。下面是解决方法:

global.c(或.cpp)中声明变量,然后建一个头文件global.h 在所有的变量声明前加上extern ...
extern HANDLE ghEvent;
注意这儿不要有变量的初始化语句。然后在其他需要使用全局变量的 cpp文件中包含.h 文件而不要包含 .cpp 文件。编译器会为global.cpp 生成目标文件,然后连接时,在使用全局变量的文件中就会连接到此文件

阅读(2720) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~