(уточняя, что уже было указано в комментариях)
C ++ - (обычно) скомпилированный язык.(Хотя также существуют интерпретаторы, XCode с clang или gcc не принадлежат им.)
Исходный код (предоставленный OP) скомпилирован в машинный код , исполняемый процессором CPU .(Обычно это процессор, на котором работает компилятор, но это может быть и для другого → кросс-компиляция .) Машинный код - это двоичный код (трудно читаемый обычным пользователем), который является единственным кодомкоторый может быть напрямую «интерпретирован» процессором.
Созданный исполняемый файл должен запускаться с использованием определенных функций ОС (например, fork()
и exec()
).Оболочка (например, bash
) может сделать это, но может быть запрограммирована и в других программах.
IDE s (например, XCode или VisualStudio) предоставляют команды (кнопки) длякомпиляция и запуск.Кнопка «Воспроизвести» проверяет, был ли исходный код изменен с момента последней компиляции.Если это так, он компилируется снова и результат сохраняется в виде исполняемого файла.(В противном случае компиляция может быть пропущена.) Впоследствии (при условии, что не было никаких ошибок компиляции) процесс IDE fork()
sa для exec()
s исполняемого файла (т.е. скомпилированной программы).
Один разпрограмма завершает работу, она возвращает номер, который может быть получен в родительском процессе (который запустил программу).Если родительский процесс был, например, bash
, то код возврата сохраняется в переменной, которую можно впоследствии извлечь.
echo $?
печатает возвращенное значение последнего завершенного дочернего процесса.
AnIDE может сообщить о возвращенном значении в каком-то окне журнала.В VisualStudio это окно вывода.Как описано в вопросе OP, похоже, что в XCode он похож.