避免在C ++中重新定义

时间:2013-04-10 20:36:10

标签: c++ arduino c-preprocessor

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

档案 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这样的东西包裹在大块代码中(错误信息是:“多重定义of ___vector_17'“)。有没有办法解决它而不使用命名空间

2 个答案:

答案 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;
}