Другие языки программирования и технологии

Програмисты на СИ.

Можно ли создать программу без заголовочный файлов именно которая что-то делает в не пустой блок Main? Или все функции заключены именно в заголовочный файлах кроме main?
Покажите код.
Laziz Rahimov
Laziz Rahimov
5 407
Можно
Sergey Fisura
Sergey Fisura
19 655
Лучший ответ
Laziz Rahimov Покажи код программы.
Самый простой вариант: получаешь параметры из командной строки (параметры main) и выводишь ответ в return этой функции. Программа получает что-то на вход и выводит число которое ты выводишь как результат. В итоге ноль дополнительного кода.

Вариант посложнее: тебе нужен ввод-вывод для общения с окружением. Каждая операционная система реализует его по своему. Т. е. Windows, DOS, Linux у каждой есть своя реализация всех функций вроде чтения файлов или вывода на экран.

Это значит, что ты не сможешь написать код, который выводит Hello world для любой платформы. Самый простой вариант это написать для чистого дос. Там можно ввод вывод сделать через прерывания и все что тебе нужно это использовать ассемблерные вставки. Записываешь в регистры параметры и потом делаешь вызов прерывания. Пример функций биоса тут: http://www.codenet.ru/progr/dos/int_0009.php

Для Windows все немного посложнее. Для использования функций операционной системы тебе нужно статически линковаться с библиотекой kernel32.dll. Для этого нужно объявить функции оттуда, которые содержатся в заголовочном файле. В теории ты можешь просто найти объявление нужной тебе функции и просто скопировать в main.cpp, тогда никаких заголовочников не нужно. Чисто теоретически ты можешь просто эксперементально взять адрес функций и записать чисто ручками и вызывать функцию по этому адресу. Механизм загрузки dll может загрузить библиотеку по любому адресу, но в целях ускорения, как правило kernel32.dll загружается всегда по одному и тому же адресу, поэтому оно может сработать. Понятное дело, что это все извращение и никто так не пишет.

Ну и способ для дурака. Все что далет include это просто подстановка содержимого файла на это место. Ты можешь взять заголовочный файл руками и подставить его содержимое вместо include. Тогда у тебя всё будет в одном файле, как ты и хотел. Можешь даже выкинуть не нужное, тогда останется не так и много даже.