一个关于编译和inline的问题
2011-12-09 18:09
120 查看
如下:
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(){};
////////////////////////////////////////////////////////////////////////////////////////////////////////
解决办法虽然找到了,但里面的原因俺还不清楚,我下来研究,弄透了再把此文档进行更新。
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(){};
////////////////////////////////////////////////////////////////////////////////////////////////////////
解决办法虽然找到了,但里面的原因俺还不清楚,我下来研究,弄透了再把此文档进行更新。
相关文章推荐
- 大家好!请教大家一个问题!关于日文编译的问题!
- 关于VC6中基于对话框的程序,往Combox 添加一个CComboBox变量,然后程序编译运行,窗口不出现的问题
- 关于sublime 编译C与gc++编译C的一个问题
- 关于编译Duilib出现的问题的一个解决办法
- 一个关于HQL预编译的简单问题
- 一个关于OpenCV2.2静态编译时无法用cvCaptureFromFile读取文件的问题
- 一个关于bin目录下DLL动态编译的问题
- 关于cocos2dx3.0在eclipse中的一个小编译问题
- 填一个坑。关于把ruby编译到android上的一个遗留问题。
- 关于编译器编译顺序的一个小问题...
- 关于一个android工程同时使用多个工程库,在编译时出现的问题
- 关于Myeclipse编译的一个问题的处理
- 关于Qt编译时问题的一个非常奇怪的解决方法
- 一个关于VS2008在其他未安装VS2008的电脑上无法运行编译的程序的问题 收藏
- 关于inline-block,间隙距离去除,以及div自动换行,高度等问题的一个demo
- 话说关于一个px4新工程编译时常见问题
- 关于一个STM32编译报错问题,变量声明不能在语句后面
- 请问各位大神一个关于 .net mf 编译的问题
- 一个关于VS2008在其他未安装VS2008的电脑上无法运行编译的程序的问题
- 关于C语言多个源文件编译成一个程序