一个关于编译和inline的问题

如下:

Test.h 文件内容

class InlineRedefineClass {
public:
InlineRedefineClass():m_data(0){}

void Test();

        void SetValue(int value);

private :
int m_data;
};

void Test(){};
//


Test1.cpp 文件内容:

#include "Test.h"

void InlineRedefineClass::SetValue(int value)
{
Test();
m_data = value;
}

Test2.cpp 文件内容:

#include "Test.h"

。。。。。。。。。。。。。。(Test2.cpp随便怎么写,只要包含Test.h头文件)


编译Test1.cpp和Test2.cpp文件,会说InlineRedefineClass::Test(void)  multiply defined

不知道是什么原因(应该是编译时对符号解析以及重定位的问题)


但如下方法可以解决这类问题:

1. 将函数Test()放在一个实现文件(.cpp)里进行定义;

2. 若想在头文件里定义的话,给函数Test()前加上 lnline,如下:

    inline void Test(){};



解决办法虽然找到了,但里面的原因俺还不清楚,我下来研究,弄透了再把此文档进行更新。









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值