最近在使用程序编辑机器人控制程序,但是在编译程序时遇到error C2146和error c4430错误,经过网上查阅资料发现是头文件之间包含顺序引起的。
如果存在a.h和b.h这两个头文件,在a.h包含b.h头文件,同时在b.h又包含a.h头文件,那么就会有可能形成循环包含的问题。解决办法是避免出现头文件循环包含,另外有些情况可能是头文件的包含顺序存在问题,通过将头文件包含的顺序调换一下就可以解决问题。
目前遇到的问题就是头文件包含顺序不对引起的,原来的头文件包含顺序为:
#include "CCore.h"
#include "CLibCore.h"
#include "CDataAlarm.h"
#include "CDataCurPos.h"
#include "CDataNumReg.h"
#include "CDataPosReg.h"
#include "CDataPosRegXyzwpr.h"
#include "CDataSysVar.h"
#include "CDataSysVarPos.h"
#include "CDataTable.h"
#include "CDataTask.h"
此时出现的错误为:
经过一番调试之后,发现是第一个头文件和第二个头文件之间顺序不对,通过将两个头文件之间的顺序修改,错误消失。
#include "CLibCore.h"
#include "CCore.h"
#include "CDataAlarm.h"
#include "CDataCurPos.h"
#include "CDataNumReg.h"
#include "CDataPosReg.h"
#include "CDataPosRegXyzwpr.h"
#include "CDataSysVar.h"
#include "CDataSysVarPos.h"
#include "CDataTable.h"
#include "CDataTask.h"
此时可以正确的生成程序。