Программа «hello world» c:

Введите следующие команды, чтобы выполнить эту программу c

gcc -c hello.c

он создаст объектный файл hello.o.

gcc -o результат hello.o

./результат

Теперь он возьмет этот объектный файл и создаст вывод.

Вывод: привет, мир

Это была программа «Hello World». Теперь давайте посмотрим, какие шаги включены в это выполнение программы на языке C. Я собираюсь обсудить 3 основных шага с практическими примерами, чтобы увидеть, как конкретный этап выполняет свои задачи. Но есть еще много шагов, таких как сборка, загрузка и т. д. Только компилятор имеет 5-6 шагов, включая лексические токены, формирование дерева синтаксического анализа, проверку синтаксических ошибок и т. д.

Выполнение: Предварительная обработка => Компиляция => Связывание

1) Препроцессор: предназначен для подготовки исходных файлов для компиляции. Первая строка «#include ‹stdio.h›», когда компилятор ее видит, ничего о ней не знает. Итак, перед компиляцией препроцессор заменяет заголовочный файл содержащимися в нем определениями и объявлениями. Вот пример.

Мы собираемся создать два отдельных файла, один main.c и другойmultiple.h, заголовочный файл и выполнить следующие шаги, чтобы увидеть, что делает препроцессор.

Шаг 1:добавьте файл заголовка в «main.c»

Шаг 2.Теперь мы создаем файл с именемmultiple.h и добавляем в него следующее определение функции.

Шаг 3: теперь мы увидим, как препроцессор изменяет файл main.c для компиляции командой компилятора: gcc-E -P main.c

Таким образом, препроцессор заменяет заголовочный файл функцией, определенной в нем. Теперь, когда компилятор увидит умножить (2,4) вызов функции, он будет знать, где находится эта определенная функция.

2.) Компиляция: компилятор компилирует файл main.c и создает исполняемый объектный файл после прохождения многих процессов, таких как создание дерева синтаксического анализа, создание промежуточного кода и т. д.

Чтобы увидеть компиляцию, мы увидим объектный файл вывода, выполнив некоторые команды в том же примере.

Шаг 1:сначала мы запускаем «gcc -c main.c », чтобы создать объектный файл.

Шаг 2: Затем мы выполняем его с помощью следующей команды.

3.) Связывание. На этом этапе компоновщик связывает все объектные файлы для создания исполняемых файлов.

Практично:мы собираемся создать еще один файлmulti.c, который будет содержать определение функции, аmulti.h содержит только объявление функции. мы увидим, как компоновщик связывает оба файла main.c и multiple.c, чтобы сделать вызов из main.c для функции умножения.

Шаг 1) создайте три файла.

Файл main.c содержит ссылку на файлmulti.c. Итак, сначала мы создадим отдельные объектные файлы для main.c иmultiple.c и свяжем их.

Шаг 2) Создайте объектный файл для main.c

Шаг 3) создайте объектный файл дляmulti.c

Шаг 4) Теперь мы связываем оба объектных файла для выполнения.

Резюмируем связывание: - сначала мы делаем вызов функции умножения, но заголовочный файл заменяется объявлением функции. определение функции хранится в файлеmulti.c. Таким образом, на этапе связывания компоновщик объединяет оба объектных файла для вызова функции умножения.

Вот ошибка, которую он покажет, если вы выполните ее напрямую, не связывая оба файла.

Есть еще много шагов, но я наткнулся на эти 3 шага, которые я видел на практике.

СпасибоКенни Керр за все концепции, которые я изучил на вашем курсе.

Всем спасибо. Удачного кодирования и обучения.