0

我想避免从两个不同的包含文件重新定义如下:

文件ABC.h

extern int v=1;

文件foo.h

#include "ABC.h"
class Foo
#ifdef BLA
: public ABC
#endif

{
    ...
};

文件bar.h

extern int v=3;

主要的:

#define BLA
#include <foo.h>
#include <bar.h>

基本上foo是我自己写的一个类,bar是一个第三方库。但这似乎不起作用。我应该如何解决问题?

抱歉,这有点难以描述,这个例子有点糟糕,因为冲突的部分实际上不是变量,而是类似#define并包裹在大块代码中的东西(错误消息是:“__vector_17'的多重定义”)。有没有办法在不使用命名空间的情况下解决它?

4

2 回答 2

1

使用命名空间可以解决这个问题:

namespace foo
{
    int val =1;
}

namespace bar
{
    int val =3;
}

using namespace foo;

int x = val; //Now x will be assigned with 1
于 2013-04-10T20:42:27.117 回答
0

命名空间是您所需要的:

namespace foo
{
    int v =100;
}

namespace bar
{
    int v =500;
}
于 2013-04-10T20:46:41.277 回答