当前位置: 代码迷 >> 综合 >> QT windows环境下头文件相互包含无法通过预先声明解决
  详细解决方案

QT windows环境下头文件相互包含无法通过预先声明解决

热度:83   发布时间:2023-10-21 01:53:38.0

今天从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无法接受头文件相互包含

  相关解决方案