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?