Linux平台下编译出错的情况

在一个头文件中定义了几个整形的变量。
然后有多个cpp文件中,也定义了同名的整形变量,
在各个*.cpp文件中各自重新定义。这些*.cpp目前不知道是否include那个定义该同名变量的头文件。

在编译生成*.o文件时,没有问题。当把这些*.o文件联结成一个可执行的文件时,
老是给出该整形变量多重定义的错误提示,联结不成功。

我的问题是:
形成这样错误提示的原因,有哪些解决方法?
或者是否可以设置gcc的编译参数,那样就可以自动消除那些多重定义的错误提示。是编译顺利完成。
---------------------------------------------------------------

这些变量是全局的吗?如果是,在一个文件中定义一次,其他地方
在定义前加extern。
如果只在本文件内使用,在定义前面加static。
这样修改一下就应该没问题了。
---------------------------------------------------------------

这些变量是全局的吗?如果是,在一个文件中定义一次,其他地方
在定义前加extern。
^^声明
如果只在本文件内使用,在定义前面加static。
这样修改一下就应该没问题了。

---------------------------------------------------------------

如果不想重复定义,可以在.h文件头部加上
#ifndef _YOURHEADFILENAME_H
#define _YOURHEADFILENAME_H
//头文件原文内容
...
...
#endif
---------------------------------------------------------------

#ifndef /+你的变量/
#define /你的变量/
#endif

---------------------------------------------------------------

////////////////////////////////
//header.h
#ifndef any_name_you_like
#define any_name_you_like

extern int global_int;
//other stuff...

#endif

//////////////////////////////////////
//test1.cpp
int global_int;
//other stuff...

//////////////////////////////////////
//test2.cpp
//do NOT touch it

---------------------------------------------------------------

好像与linux无关

Published At
Categories with 服务器类
Tagged with
comments powered by Disqus