Что делает #include <stdio.h> действительно в программе c

Я новичок в программировании c, и я кодировал некоторые простые программы "Hello world".

Во всех этих программах я помещаю #include<stdio.h> в начало, но я не уверен, что это значит. Я googled, и я обнаружил, что stdio.h - это файл, который имеет команды для препроцессора, но что такое препроцессор? Я подумал, что когда пишу код, я его компилирую, а мой код преобразуется в форму, которую может прочитать "компьютер", а затем я могу ее запустить. Может ли кто-нибудь объяснить мне, что такое использование этой команды?

Ответы

Ответ 1

Он ищет файл stdio.h и эффективно копирует его в место этих операторов #include. Этот файл содержит так называемые прототипы функций таких функций, как printf(), scanf(),... так что компилятор знает, каковы их параметры и возвращаемые значения.

Ответ 2

Простейшим объяснением может быть, что ваша программа вызывает или использует много функций, код которых не является частью вашей программы. Напр. если вы пишете "printf" в своем коде, чтобы что-то печатать, компилятор не знает, что делать с этим вызовом.

stdio.h - это место, где хранится информация для этого printf.

Update:

Скорее прототип функции printf (имя, тип и параметры возврата) находятся в stdio.h. Это все требуется на этапе компиляции. Фактический код printf включен в фазу связывания, которая появляется после компиляции.

Оператор include в основном вставляет все прототипы функций перед фактической компиляцией. Следовательно, препроцессор имени.

Обновление 2:

Поскольку вопрос, сфокусированный на включении оператора (и OP также задал вопрос о написании определения самих функций, другой важный аспект заключается в том, что он написан как (обратите внимание на скобки angular)

#include <stdio.h>

Препроцессор предполагает, что он является стандартным заголовком библиотеки и сначала смотрит в системные папки, где был установлен компилятор.

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

#include "stdio.h"

Ниже показано, и поведение переносимо на всех платформах.

Ответ 3

Он сообщает компилятору использовать функции, структуры, макросы и т.д. из файла sdtio.h, который представляет собой часть glibc (или что-то другое, что вы получили стандартную библиотеку C). Компилятор также добавляет запись в выходной исполняемый "список ссылок", который должен быть связан с стандартной библиотекой C.