多个文件嵌套#include

多个文件嵌套include,尽量把include写在CPP里面,否则有可能导致各种嵌套包含导致的问题。

比如
define.h:

struct Order{
  wstring order_no;
  wstring name;
  float price;
}

head.h:

#include "windows.h"
#include "duilib.h"
#include 
using namespace std;


//一些结构体和数据类型
#include "define.h"
//需要有用的逻辑代码文件
#include "InstantMsgMgr.h"
#include "Config.h"

OrderMgr.h:

#include "head.h"

InstantMsgMgr.h:

#include "head.h"
#include "OrderMgr.h"

class CInstantMsgMgr{
COrderMgr order_mgr_;
}

这样编译的时候 就会提示order_mgr_前面未声明定义什么的错误,就是没有识别到COrderMgr类。

如果我们把所有的#include "head.h" 都放到cpp中,就完美解决了。

define.h 和 head.h不需要改动,
把逻辑代码文件改动一下#include位置就行了
比如

OrderMgr.h:

#include "windows.h"
#include 
using namespace std;

#include "define.h"

OrderMgr.cpp:

#include "OrderMgr.h"
#include "head.h"

InstantMsgMgr.h:

#include "windows.h"
#include 
using namespace std;

#include "define.h"

#include "OrderMgr.h"

class CInstantMsgMgr{
COrderMgr order_mgr_;
}

InstantMsgMgr.cpp:

#include "InstantMsgMgr.h"
#include "head.h"

这样编译 就毫无问题了。避免了head和逻辑代码文件也被嵌套使用,导致的错误

你可能感兴趣的:(多个文件嵌套#include)