Ошибка компиляции Qt: endl всегда будет иметь значение true

У меня есть следующий фрагмент кода, который компилирует

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& епсИ (QTextStream&) ‘всегда будет оцениваться как’ true ‘[-Waddress]

Что это значит и как мне это исправить? Поскольку печатается символ новой строки, я предполагаю, что это не проблема пространства имен …

3

Решение

Когда вы используете поток двоичных данных, не рекомендуется начинать вставку новых строк. Это один из основных пунктов простого QTextStream.

Этот код работает нормально для меня без каких-либо предупреждений с gcc version 4.8.1 20130725 (prerelease) (GCC)

main.cpp

#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
4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]