Char跟着char是非法的(qglobal.h)

时间:2014-04-08 09:10:16

标签: c++ qt typedef

我已经搜索了这个论坛并找到了同样的问题,但它没有解决,甚至没有提供解决我的问题的任何线索。我正在做一个我正在使用模板的项目。 首先我使用像这样的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

2 个答案:

答案 0 :(得分:1)

在/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。

答案 1 :(得分:0)

很难说,因为你没有包含cal_point*的定义,但问题在于它被定义的位置或这些行中的某个位置。检查一下。它可能在外部文件中使其中断,依此类推。