Печат към терминал с многоетапно компилиране и безкраен цикъл

Добре, имам 5 c++ файла:

PegRTU.cpp, PegIOHandler.cpp, PegIOHandler.h, pegio.c, pegio.h (PegRTU.cpp съдържа моя main() метод).

Компилирам ги със следните команди, използвайки gcc и g++:

gcc -c pegio.c -o pegio.o
g++ -c PegIOHandler.cpp -o PegIOHandler.o -std=c++0x
g++ -c PegRTU.cpp -o PegRTU.o -std=c++0x
g++ -o pegrtu *.o -lopendnp3

Моят основен метод има безкраен do-while цикъл за наблюдение на системата и изпращане на показания към сървър. Той съдържа извикване на cout извън (преди) цикъла за печат към терминала. Моят проблем е:

Cout не отпечатва на терминала, когато стартирам програмата си. Защо?

Направих тестова програма:

#include <iostream>

int main()
{
  std::cout << "TEST";

  while(1)
  {

  }
  return 0;
}

И открих, че това също не работи, отпечатва се само ако премахна безкрайния цикъл. Функционалността на програмата ми работи добре, следи и изпраща показания, но не иска да печата на терминала. Също така първо имах притеснение, че може да е свързано с многоетапното компилиране, но мисля, че вероятно е цикълът? Някакъв съвет?

Благодаря!

Корнел


person Cornel Verster    schedule 01.08.2013    source източник


Отговори (1)


Трябва да изчистите iostream буфера:

Опитвам:

#include <iostream>

int main()
{
  std::cout << "TEST";
  std::cout.flush(); // Added this
  while(1)
  {

  }
  return 0;
}
person Al Pacifico    schedule 01.08.2013