3

我有以下编译的代码片段

QByteArray block;
QDataStream out(&block, QIODevice::WriteOnly);

for (QStringList::Iterator it = commandList.begin(); it != commandList.end(); ++it) {
    out << "Command: " << *it << endl;
}

但总是给我这个警告:

test.cpp:87:警告:'QTextStream& endl(QTextStream&)' 的地址将始终评估为'true' [-Waddress]

这是什么意思,我该如何解决?由于正在打印换行符,我认为这不是命名空间问题......

4

1 回答 1

4

当您使用二进制数据流时,开始插入新行并不是一个好习惯。这是简单 QTextStream 的要点之一。

这段代码对我来说很好,没有任何警告gcc version 4.8.1 20130725 (prerelease) (GCC)

主文件

#include <QByteArray>
#include <QDataStream>
#include <QIODevice>
#include <QStringList>

int main()
{
    QStringList commandList = QStringList() << "foo" << "bar" << "baz";
    QByteArray block;
    QDataStream out(&block, QIODevice::WriteOnly);

    for (QStringList::Iterator it = commandList.begin(); it != commandList.end(); ++it)
        out << "Command: " << *it;
}

建造

g++ -std=c++11 -Wpedantic -Wall -I/usr/include/qt -I/usr/include/qt/QtCore -lQt5Core -fPIC main.cpp
于 2013-09-28T00:22:31.940 回答