Дополнительные статьи
Функция main позволяет получать извне при запуске некоторые значения. Для этого она имеет следующую сигнатуру:
int main(int argc, char *argv[])
Параметр argc представляет количество аргументов командной строки, которые переданы приложению.
Параметр argv представляет указатель на массив строк, который представляет переданный набор аргументов.
Например, выведем все аргументы из массива argv на консоль:
#include int main(int argc, char *argv[]) < for (int i = 0; i < argc; i++) < printf("%s \n", argv[i]); >return 0; >
Если приложению НЕ передается ни одного аргумента, то argc равен 1. А элемент argv[0] представляет имя исполняемого файла. Например, пусть у нас приложение компилируется в файл hello.exe , то при запуске этого файла командой
hello
Значение элемента argv[0] будет равно «hello». Это будет единственный элемент в массиве.
Но передим приложению некоторые аргументы. Например, запустим файл hello.exe с помощью следующей команды:
hello Tom Bob Sam
Тогда программа получит все строки через массив argv и выведет из на консоль:
Как запустить программу на си в командной строке Windows
Одним из наиболее распространенных компиляторов для языка C является компилятор Clang , который развивается в рамках проекта LLVM. Рассмотрим создание первой простейшей программы на C с помощью Clang под ОС Windows.
Прежде всего нам надо установить непосредственно сам компилятор. Clang развивается в рамках проекта LLVM , репозиторий которого можно найти на github: https://github.com/llvm/llvm-project. И данный проект предоставляет готовый установщик компилятора под Windows
Для загрузки установщика под Windows перейдем на страницу релизов в данном репозитории по ссылке https://github.com/llvm/llvm-project/releases/
По умолчанию в самом верху будут ссылки на самую последнюю версию. Но по умолчанию ссылка на установщик для Windows может быть скрыта. В этом случае под набором ссылок необходимо нажать на ссылку Show All assets . И среди появившихся ссылок найдем пункт LLVM-XX.X.X-win64.exe , где XX.X.X — это версия. Например, в моем случае это файл LLVM-15.0.7-win64.exe
Это версия для 64-битной версии Windows. Если ОС 32-х битная, то необходимо загрузить файл LLVM-15.0.7-win32.exe
После загрузки запустим файл.
На стартовом экране программы нажмем на кнопку «Далее». Затем надо будет принять лицензионное соглашение
Далее надо будет указать опции установки:
Чтобы при компиляции не указывать полные пути к компилятору или вручную не добавлять путь к нему в переменные среды выберем на этом окне пункт Add LLVM to the system PATH for current user
На следующем окне укажем папку для установки. Можно оставать путь по умолчанию — «C:/Program Files/LLVM»:
На следующих окнах оставим все опции по умолчанию и запустим процесс установки. После успешной установки мы можем приступать к использованию Clang
Чтобы проверить установку Clang, в терминале/командной строке следует ввести команду
clang --version
В этом случае нам должна отобразиться базовая информация о компиляторе, типа версии и т.д.:
C:\Users\eugen>clang --version clang version 15.0.7 Target: x86_64-pc-windows-msvc Thread model: posix InstalledDir: C:\Program Files\LLVM\bin
Первая программа
После завершения установки если мы откроем каталог C:\Program Files\LLVM\bin , то найдем там все необходимые файлы компиляторов:
В частности, файл clang.exe предназначен для компиляции программы на языке Си.
Создание первой программы
Итак, компилятор установлен, и теперь мы можем написать первую программу. Для этого потребуется любой текстовый редактор для набора исходного кода. Можно взять распространенный редактор Visual Studio Code или даже обычный встроенный Блокнот.
Итак, создадим на жестком диске папку для исходных файлов. А в этой папке создадим новый файл, который назовем hello.c .
В моем случае файл hello.c находится в папке C:\c.
Теперь определим в файле hello.c простейший код, который будет выводить строку на консоль:
#include // подключаем заголовочный файл stdio.h int main(void) // определяем функцию main < // начало функции printf("Hello METANIT.COM!\n"); // выводим строку на консоль return 0; // выходим из функции >// конец функции
Для вывода строки на консоль необходимо подключить нужный функционал. Для этого в начале файла идет строка
#include
Директива include подключает заголовочный файл stdio.h, который содержит определение функции printf, которая нужна для вывода строки на консоль.
Далее идет определение функции int main(void) . Функция main должна присутствовать в любой программе на Си, с нее собственно и начинается выполнение приложения.
Ключевое слово int в определении функции int main(void) говорит о том, что функция возвращает целое число. А слово void в скобках указывает, что функция не принимает параметров.
Тело функции main заключено в фигурные скобки <>. В теле функции происходит вывод строки на консоль с помощью функции printf, в которую передается выводимая строка «Hello METANIT.COM!».
В конце осуществляем выход из функции с помощью оператора return . Так как функция должна возвращать целое число, то после return указывается число 0. Ноль используется в качестве индикатора успешного завершения программы.
После каждого действия в функции ставятся точка с запятой.
Теперь скомпилируем этот файл. Для этого откроем командную строку Windows и вначале с помощью команды cd перейдем к папке с исходным файлом:
cd C:\c
Чтобы скомпилировать исходный код, необходимо компилятору clang передать в качестве параметра файл hello.c:
clang hello.c -o hello.exe
Дополнительный необязательный параметр -o hello.exe указывает, что скомпилированный файл будет называться hello.exe. Если не указать этот параметр, то файл будет называться по умолчанию — a.exe.
После выполнения этой команды будет скомпилирован исполняемый файл, который в Windows по умолчанию называется hello.exe. И мы можем обратиться к этому файлу, и в этом случае консоль выведет строку «Hello METANIT.COM!», собственно как и прописано в коде.
Если вместо командной строки используется оболочка PowerShell, то для запуска файла надо прописать «./hello».
При подготовке материала использовались источники:
https://metanit.com/c/tutorial/4.7.php
https://metanit.com/c/tutorial/1.8.php