Что делает #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.