Если вы используете Qt и endl, вы можете случайно использовать неправильный endl
, случилось со мной сегодня, и я был как ... WTF ??
#include <iostream>
#include <QtCore/QtCore>
#include <QtGui/QtGui>
//notice that i dont have a "using namespace std;"
int main(int argc, char** argv)
{
QApplication qapp(argc,argv);
QMainWindow mw;
mw.show();
std::cout << "Finished Execution !" << endl << "...";
// Line above printed: "Finished Execution !67006AB4..."
return qapp.exec();
}
Конечно, это была моя ошибка, так как я должен был написать std::endl
, , но если вы используете endl
, qt и using namespace std;
, это зависит от порядка включаемых файлов, если правильный endl
будет использоваться. *
Конечно, вы можете перекомпилировать Qt для использования пространства имен, поэтому вы получите ошибку компиляции для примера выше.
РЕДАКТИРОВАТЬ: Забыл упомянуть, Qt endl
объявлен в "qtextstream.h", который является частью QtCore
* EDIT2: C ++ выберет правильный endl
, если у вас есть using
для std::cout
или пространство имен std
, так как std::endl
находится в том же пространстве имен, что и std::cout
, механизм C ++ ADL будет выбрать std::endl
.