C ++多重定义链接错误与.h中声明的const

时间:2016-09-27 11:57:23

标签: c++ linker const

我正在使用

中定义的一些常量

Constanst.h

#ifndef __CONSTANTS_H__
#define __CONSTANTS_H__ 

namespace A{
    namespace B{

    const int FIRST = 1;
    const int SECOND = 2;
    }
}
#endif

我从2个不同的.cpp(A.cpp和B.cpp)

中包含此文件

gcc版本3.2.3给了我"多重定义"链接错误

我只是通过包含另一个" File.h"来解决问题。其中包括" Constants.h"并声明与" extern"

相同的常量

有人可以解释原因吗?我认为这是C中的一个问题,而不是C ++

1 个答案:

答案 0 :(得分:0)

使用g ++版本4.3.4:

constants.h:5: error: ISO C++ forbids declaration of `FIRST' with no type
添加类型int

,它可以正常工作。

那么也许你应该使用更新的编译器?使用g ++而不是gcc?