Почему все файлы C, написанные моим преподавателем, начинаются С#?
Я просматриваю некоторые примечания к курсу, и каждый исходный файл программы C начинается с единственного #
в первой строке программы.
Затем появляются пробелы и следуют за другим материалом, за которым следует функция main
.
В чем причина #
?
(Теперь это из-за термина, и я не могу спросить этого человека.)
Вот пример (есть дополнительная строка в конце закрытия }
)
#
#include <stdio.h>
int main() {
printf("Hello, World!");
return 0;
}
Ничего себе, это требование возвращается к 1970-м годам.
В самые ранние дни предварительно стандартизованного C, если вы хотите вызвать препроцессор, вам нужно было написать #
как первое, что было в первой строке исходного файла. Написание только #
в верхней части файла дает гибкость при размещении других директив препроцессора.
Из оригинального проекта C великим Деннисом Ричи:
12. Строки управления компилятором
[...] Чтобы вызвать [препроцессор] для вызова, необходимо, чтобы первая строка программы начинается С#. Поскольку нулевые строки игнорируются препроцессором, эта строка не должна содержать других информация.
Этот документ делает для большого чтения (и позволил мне перейти на этот вопрос, как сумасшедший кот).
Я подозреваю, что лектор просто сентиментален - он не требовался, конечно, с ANSI C.
#
в строке сам по себе, а в том, что он начинается с #
, так почему бы не перейти непосредственно к #include
? Или я не так понимаю?
В соответствии со стандартом ISO C/C++:
Директива предварительной обработки вида
# new-line
не имеет никакого эффекта
Таким образом, в современных компиляторах этот пустой хеш ничего не делает (new-line ;
like- new-line ;
не имеет функциональности).
PS: В предварительно стандартизированном C, # new-line
играл важную роль, он использовался для вызова препроцессора C (как указано @Bathsheba). Итак, код здесь был либо написан в тот период времени, либо пришел по привычке.
#
, затем пустая строка, затем программа.