在一个头文件中定义了几个整形的变量。
然后有多个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无关