Qt 用户定义的文本、空格和c++11问题
我正在编译非常简单的代码,输出时收到错误:Qt 用户定义的文本、空格和c++11问题,qt,c++11,gcc,Qt,C++11,Gcc,我正在编译非常简单的代码,输出时收到错误: `../untitled6/main.cpp:17:1: error: unable to find string literal operator 'operator"" __FILE__' connect(&d_t, SIGNAL(timeout()), this, SLOT(doPlay()));` 代码如下: #include <QObject> #include <QTimer> class Te
`../untitled6/main.cpp:17:1: error: unable to find string literal operator 'operator"" __FILE__'
connect(&d_t, SIGNAL(timeout()), this, SLOT(doPlay()));`
代码如下:
#include <QObject>
#include <QTimer>
class Test : public QObject
{
Q_OBJECT
public:
explicit Test(QObject *parent = 0) : QObject(parent) {}
void Play()
{
connect(&d_t, SIGNAL(timeout()), this, SLOT(doPlay()));
}
public slots:
void doPlay() {}
private:
QTimer d_t;
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
Test test;
test.Play();
return a.exec();
}
只有在我的项目中包含c++11支持时,才会发生这种情况。如果没有这种支持,编译就没有问题了。我读过关于gcc版本的用户定义文本和空格的内容。4.7包括c++11支持时。但是我的代码不包括任何文件代码。。。。我发现问题与信号和插槽结构有关。但我不知道这里出了什么问题。。。
另外,对于编译,我使用sh4-linux-g++GCC4.8
我发现在发布版本配置中没有观察到这个问题。这似乎是调试生成配置的问题…这已在Qt 4.8.1中修复:
您应该升级。Qt的信号和插槽是宏,显然在这里扩展为错误代码。您应该尝试使用gcc-E分析生成的代码,并查看该行。您使用什么命令来编译代码?由于文件包含Q_对象宏,是否使用moc?