При вводе
для
в текстовом файле
компилятор сначала увидит тот факт, что он вызван вами для работы с этим файлом .
Из этого он сделает вывод, что это должен быть текстовый файл с кодом c. Иначе зачем вам просить его обработать этот файл? Таким образом, внутри содержимого файла нет "{двоичный код в начале файла, чтобы сообщить компилятору, что это текст}".
Тогда да, он читает f
, o
, r
.
Это делается с помощью службы / функции операционной системы, которая в какой-то момент также предоставляет информацию о том, что был прочитан последний символ / байт. Однако эта информация не содержится в самом содержимом файла. Информация в конечном итоге поступает из метаданных, которые файловая система (доступ через операционную систему) имеет в файле, например, его длина в байтах (вместе с другими, например, точное местоположение на носителе).
Таким образом, нет "{ двоичный код в конце файла, чтобы сообщить компилятору, что это конец файла} "внутри содержимого файла.
Единственное, что близко к вашей информации" {binary} ", - это символ новой строки \n
или пара возврата и новой строки \r\n
, в зависимости от среды. Они обозначают границу между двумя строками (можно увидеть как начало новой строки или конец предыдущей).
Я пропустил несколько деталей, таких как участие препроцессора, чтобы сосредоточиться на идея вашего вопроса.
Строго говоря, когда компилятор (или часть программы, которая выполняет задание компиляции) работает, препроцессор (или часть программы, которая выполняет задание предварительной обработки) уже завершена.