编译错误marco Q_DECLARE_METATYPE passed 2 arguments but takes just 1

现象:

想要使用Q_DECLARE_METATYPE声明一个map类型的变量,首先使用define定义一个宏OMAP为一个map,然后再用Q_DECLARE_METATYPE声明这个宏。如下所示:


#define OMAP QMap<QString,QDateTime>

Q_DECLARE_METATYPE(OMAP)


编译时提示错误:marco Q_DECLARE_METATYPE passed 2 arguments but takes just 1

错误大概的意思就是Q_DECLARE_METATYPE这个宏只要一个参数,你却传递了两个参数。


原因:

首先使用define定义宏只是简单的替换,形如:Q_DECLARE_METATYPE(QMap<QString,QDateTime>)。然后Q_DECLARE_METATYPE 宏会把 QString后面的逗号当成了分割符, 这样就认为有两个参数了。


解决办法:
把define换成typedef
typedef  QMap<QString,QDateTime>  OMAP


演示站
上一篇:QtCreator提示‘没有这个Qt版本的编译器,请定义一个或更多编译器’
下一篇:微信小程序开发之hello world

发表评论