1

Lib1.a:

#include<stdio.h>
#include<stdlib.h>
class Lib
{
public:
inline static const void Test()
{
printf("this is lib1\n");
};
void Lib1Test()
{
Lib::Test();
}
};

Lib2.a:

#include<stdio.h>
#include<stdlib.h>
class Lib
{
public:
inline static const int Test()
{
printf("this is lib2\n");
};
void Lib2Test()
{
Lib::Test(); // this will call the Test in Lib1,amazing!
}
};

lib1.a 和 lib2.a 将链接在一起进行测试。

什么原因?Lib::Test 没有重新定义吗?

4

2 回答 2

2

这违反了单一定义规则,这会使您的程序无效,但不需要实现来诊断它。

于 2012-05-25T02:46:17.750 回答
1

没有 Lib::Test 重新定义

正如 dribeas 已经回答的那样,您的程序格式错误(违反了单一定义规则)。

要了解为什么它不会链接失败,请在此处COMDAT阅读有关部分。

于 2012-05-25T03:18:52.697 回答