×
Traktatov.net » Язык программирования C [Лекции и упражнения, 6-е изд.] » Читать онлайн
Страница 44 из 557 Настройки

Вы отвечаете за выполнение двух процедур: корректный ввод кода программы с клавиатуры и выбор имени для файла, в котором будет храниться введенный код. Как обсуждалось ранее, это имя должно заканчиваться на .С. Обратите внимание, что система Unix различает прописные и строчные буквы. Поэтому budget, с, BUDGET.с и Budget.с — три разных допустимых имени исходных файлов, в то же время BUDGET. С таковым не является, т.к. в расширении .С используется прописная, а не строчная буква.

С помощью редактора vi мы подготовили приведенную ниже программу и сохранили ее в файле inform.с.

Приведенный текст представляет собой исходный код, a inform.с — исходный файл. Здесь важно отметить, что создание исходного файла — это начало процесса, но не его конец.

Компиляция в системе Unix

Наша программа, хотя и совершенна во всех других отношениях, она все же непонятна компьютеру. Компьютер не понимает таких выражений, как #include и printf. (На этой стадии, возможно, вы тоже не особо понимаете, однако у вас есть надежда вскоре узнать, что это такое, тогда как у компьютера нет никаких шансов.) Как отмечалось выше, мы нуждаемся в помощи компилятора при трансляции написанного кода (исходного кода) в код компьютера (машинный код). Результатом этих усилий будет исполняемый файл, который содержит весь машинный код, который необходим компьютеру для выполнения работы.

Исторически сложилось так, что компилятор Unix С, вызываемый командой сс, определил язык. Но он не шел наравне со стандартом разработки, поэтому от него отказались. Однако, как правило, системы Unix предоставляют компилятор С из какого-то другого источника, а затем превращают команду сс в псевдоним этого компилятора. Таким образом, можно по-прежнему использовать одну и ту же команду, хотя она и вызывает различные компиляторы в разных системах.

Чтобы скомпилировать программу inform, с, введите следующую команду:

сс inform.с


42 Глава 1

Спустя момент приглашение командной строки Unix отобразится снова, уведомляя о том, что дело сделано. Вы можете получить предупреждения или сообщения об ошибках, если программа написана неправильно, однако предположим, что все прошло удачно. (Если компилятор жалуется, что не понимает слова void, это означает, что данная система еще не имеет компилятора ANSI С. Более подробно о стандартах речь пойдет немного позже. Пока что просто удалите слово void из текста примера.) Если воспользоваться командой Is для вывода списка файлов, обнаружится новый файл с именем a.out (рис. 1.5). Это исполняемый файл, содержащий транслированную (или скомпилированную) программу. Чтобы запустить его, достаточно ввести

а. out

и в ответ будет выдано следующее сообщение:

Конструкция .с завершает имя файла с программой на С.

Если вы хотите сохранить исполняемый файл (a. out), то должны его переименовать. В противном случае он будет заменен новым файлом а. out при следующей компиляции программы.

Рис. 1.5. Подготовка программы на языке С в среде Unix


А что можно сказать об объектном коде? Компилятор создает файл объектного кода, имеющий то же базовое имя, что и исходный файл, но с расширением .о. В нашем примере файл объектного кода получает имя inform, о, но вы его не найдете, поскольку компоновщик удалит его, как только построение исполняемой программы будет завершено. Однако если первоначальная программа использует более одного исходного файла, файлы объектного кода будут сохранены. При последующем рассмотрении многофайловых программ вы убедитесь, что это была здравая идея.