今天从linux下移植一段编译过的代码到windows下,结果出现:
error: unterminated conditional directive
这是由于头文件相互包含导致的 #ifndef 不会认 #endif 问题。
代码微缩如下:
头文件 tcv_dmhandle.h
#ifndef TCV_DMHANDLE_H
#define TCV_DMHANDLE_H#include "tcv_decthandle.h"class TCV_DectHandle;class TCV_DMHandle:public QObject
{TCV_DectHandle *m_DectHandle;
};#endif // TCV_DMHANDLE_H
头文件 tcv_decthandle.h
#ifndef TCV_DECTHANDLE_HPP
#define TCV_DECTHANDLE_HPP#include "tcv_dmhandle.h"class TCV_DMHandle;class TCV_DectHandle:public QThread
{TCV_DMHandle *m_DmHandle;
};#endif // TCV_DECTHANDLE_HPP
在linux下环境为QT5.7.1
windows环境为QT5.12.0
这可能是由于GCC和MINGW策略不一样导致windows下qt无法接受头文件相互包含