char 后跟 char 是非法的 (qglobal.h)

Char Followed by a char is illegal (qglobal.h)

本文关键字:char qglobal 后跟 非法      更新时间:2023-10-16

我已经搜索了这个论坛并发现了一个相同的问题,但它没有解决,甚至没有提供任何解决我问题的线索。我正在做一个使用模板的项目。首先我使用了这样的地图C++

 typedef map<int ,cal_point*> p_mMap2D;

它工作得很好。然后我尝试使用 Qt 制作一个 GUI,但是当我使用"QMap"时,它给出了一个错误

 typedef QMap<int ,cal_point*> p_mMap2D;
错误

25 错误 C2632:"char"后跟"char"是非法的 C:\Qt \4.7.4\include\QtCore\qglobal.h 897

然后我尝试像以前一样仅使用地图,但仍然给出错误。我在网上搜索,但没有得到任何与之相关的线索。如果我不使用Qt,那么它可以完美运行。

来自 qtglobal.h 的代码

QT_BEGIN_INCLUDE_NAMESPACE
typedef unsigned char uchar;
typedef unsigned short ushort;
typedef unsigned int uint;
typedef unsigned long ulong;
QT_END_INCLUDE_NAMESPACE

在/src/corelib/global/qglobal.h 内部 Qt 4.8.5 包含以下字符串:

# define QT_BEGIN_INCLUDE_NAMESPACE }
# define QT_END_INCLUDE_NAMESPACE namespace QT_NAMESPACE {

当预处理器扩展此宏时,例如 QT_NAMESPACE=qt 结果将是:

}
typedef unsigned char uchar;
typedef unsigned short ushort;
typedef unsigned int uint;
typedef unsigned long ulong;
namespace qt {

看起来像定义错误QT_BEGIN_INCLUDE_NAMESPACE和QT_END_INCLUDE_NAMESPACE。

很难说,因为你没有包括cal_point*的定义,但问题是它的定义在哪里或在这些行中的某个地方。检查它们。它可能在外部文件中,使其中断,依此类推。