我收到如下错误:

FxMathFunctions.h: In function 'FxInt32 IMin(FxInt32, FxInt32)':

FxMathFunctions.h:13: error: redefinition of 'FxInt32 IMin(FxInt32, FxInt32)'

FxMathFunctions.h:15: error: 'FxInt32 IMin(FxInt32, FxInt32)' previously defined here

在FxMathFunctions.h中,我有:
11: struct FxPoint2d;
12:
13: inline FxInt32 IMin(FxInt32 i1,FxInt32 i2)
14: {
15:    if (i2 < i1) i1 = i2;
16:    return i1;
17: }

FxInt32在我包含的 header 中定义为:
typedef long                FxInt32;

我不能由错误决定,如果它说正在重新定义FxInt32或整个函数。

我该如何解决?

更新我在上面添加了行号。

最佳答案

就是说整个函数定义了两次。

我灵敏的调试能力告诉我,您以某种方式递归包括了该 header ,而该 header 没有适当的防范措施。因此,内联函数定义了两次。

关于c++ - C++类重新定义错误帮助,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3098931/

10-11 00:31