我想避免从两个不同的包含文件中重新定义,如下所示:
extern int v=1;
#include "ABC.h"
class Foo
#ifdef BLA
: public ABC
#endif
{
...
};
extern int v=3;
#define BLA
#include <foo.h>
#include <bar.h>
基本上foo
是由我编写的类,bar
是第三方库。但它似乎没有用。我该如何解决这个问题?
对不起,这有点难以描述,这个例子有点不好,因为冲突的部分实际上不是变量,而是像#define
这样的东西包裹在大块代码中(错误信息是:“多重定义of ___vector_17'“)。有没有办法解决它而不使用命名空间?
答案 0 :(得分:1)
使用命名空间可以解决此问题:
namespace foo
{
int val =1;
}
namespace bar
{
int val =3;
}
using namespace foo;
int x = val; //Now x will be assigned with 1
答案 1 :(得分:0)
您需要名称空间:
namespace foo
{
int v =100;
}
namespace bar
{
int v =500;
}