Я просматриваю некоторые примечания к курсу Си, и каждый исходный файл программы на Си начинается с одного #
в первой строке программы.
Затем есть пустые строки, и после этого другие вещи, сопровождаемые main
функцией.
В чем причина #
?
(Сейчас истек срок, и я не могу спросить парня.)
Вот пример:
#
#include <stdio.h>
int main() {
printf("Hello, World!");
return 0;
}
c
c-preprocessor
Главный Человек
источник
источник
#
, затем пустая строка, затем программа.#
- это запутывание. Если вы хотите сбить всех с толку, вы можете, например, начать все ваши исходные файлы со строки#//#BEGIN#\\#
(которая абсолютно ничего не делает).Ответы:
Ничего себе, это требование идет путь назад к 1970 - е годы.
В самые ранние времена предварительно стандартизированного C, если вы хотели вызвать препроцессор , вы должны были написать в
#
качестве первой вещи в первой строке исходного файла. Запись только#
в верхней части файла обеспечивает гибкость в размещении других директив препроцессора.Из оригинальной черновой версии самого великого Денниса Ричи :
Этот документ отлично подходит для чтения (и позволил мне вскочить на этот вопрос, как бешеный кот).
Я подозреваю, что лектор просто сентиментален - это не требовалось, конечно, начиная с ANSI C.
источник
#
строке сам по себе, а в том, что он начинается с символа « а»#
, так почему бы не перейти непосредственно к символу#include
? Или я не так понимаю?Ничего не делает
Начиная с стандарта ISO C / C ++:
Таким образом, в современных компиляторах этот пустой хеш ничего не делает (вроде
new-line ;
- не имеет функциональности).PS : В предварительно стандартизированном C ,
# new-line
играющем важную роль, он использовался для вызова препроцессора C (как указано @Bathsheba). Итак, код здесь был либо написан в тот период времени, либо пришел по привычке.источник
Вы должны знать о процессе компиляции C. Потому что это «должен знать», как исходный код преобразуется в исполняемый двоичный код (файл).
Исходя из процесса компиляции, исходный код C должен пересечь раздел препроцессора. Но как сказать компилятору предварительно обрабатывать код? ... что символ времени # был введен в индикатор Preprocess для компилятора.
Например,
#define PI 3.141
есть в исходном коде. Затем он будет изменен после сеанса предварительной обработки. Значит, весь PI будет изменен на 3.141.Это как
#include <stdio.h>
, стандартные функции ввода / вывода будут добавлены в ваш исходный код.Если у вас машина с Linux, компилируйте как
gcc -save-temps source_code.c
. И посмотрите результаты компилятора.источник