C ++ / G ++ Привет, мир приложений проблема, может быть, компиляция - PullRequest
2 голосов
/ 23 августа 2010

Я пытаюсь скомпилировать мой первый файл c ++ в Windows с помощью компилятора g ++ ...

Мой файл cpp выглядит следующим образом -

#include <iostream>
using namespace std;

int main ()
{
  cout << "Hello World!";
  return 0;
}

Я набираю это в командной строке, чтобы попасть в каталог

cd C:\Users\Mark

Затем, чтобы скомпилировать мою программу, я делаю

g++ hello.cpp

Он создает имя файла a.exe (по умолчанию), но когда я нажимаю на него, командная строка быстро открывается, а затем исчезает.

Что я сделал не так? Стоит сказать Hello World! в приглашении и оставайтесь там, верно?

Ответы [ 5 ]

11 голосов
/ 23 августа 2010

То, что вы сделали, выглядит правильно, но если вы запустите программу, дважды щелкнув ее в Windows, новая командная строка будет закрыта после ее завершения. Поскольку у вас уже есть командная строка, открытая для компиляции, попробуйте запустить программу и оттуда:

g++ hello.cpp -o hello.exe
hello.exe
2 голосов
/ 23 августа 2010

Вы все сделали правильно.То, что командная строка остается открытой, не имеет ничего общего с вашей программой.Командная строка сама по себе является программой, и ее поведение по умолчанию состоит в том, что когда она запускается в ответ на выполнение консольного приложения, она сразу же закрывается после завершения программы.

Что вам нужно сделать, это запустить командуподскажите себе, а затем запустите программу изнутри, а не запускайте программу, дважды щелкнув ее значок.

Не не попадайте в плохую практику добавления вызова к какому-либоpause функция или ожидание ввода в конце программы.Вы должны не иметь привычку жестко программировать обходные пути для нежелательного поведения конкретной оболочки в вашем приложении.Просто используйте оболочку для правильного поведения, которое вам нужно.

2 голосов
/ 23 августа 2010

ты не сделал ничего плохого. В конце вашей программы нет строки чтения или чего-то еще, поэтому, когда она завершается, выполнение закрывается. Добавьте символ чтения в конце программы, чтобы он дождался завершения ввода.

2 голосов
/ 23 августа 2010

Это обычное поведение Windows при выполнении файла командной строки из пользовательского интерфейса - как только программа завершается (сразу в вашем случае), окно приглашения закрывается.

Запуск из командной строки сохранит его. Для этого Start > Run > cmd, затем cd в каталог, затем введите a.exe.

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

1 голос
/ 23 августа 2010

Приглашение не имеет ничего общего с вашей программой или языком.Это связано с вашей ОС.

Ваша программа должна запускаться из командной строки, которая (очевидно) оставит командное окно открытым после его завершения.не ложитесь спать, если вы действительно хотите, но это всего лишь уловки и не обязательно хорошая практика.Один будет:

int main()
{
    std::cin.get(); // waits for enter
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...