Почему # требуется прежде #include <stdio.h>?

Из чего функция #?  

8
задан Brian Tompsett - 汤莱恩 25 February 2016 в 22:55
поделиться

5 ответов

Он обозначает директиву препроцессора :

Одна важная вещь, которую вы должны помнить, это то, что препроцессор C не является частью компилятора C.

Препроцессор C использует другой синтаксис. Все директивы препроцессора C начинаются со знака решетки (#). Другими словами, знак решетки обозначает начало директивы препроцессора, и он должен быть первым непробельным символом в строке.

# был , вероятно, выбран произвольно в качестве неиспользуемого символа в синтаксисе C. Полагаю, @ сработало бы точно так же.

Если бы не было символа, обозначающего его, то, вероятно, возникли бы проблемы с различением кода, предназначенного для препроцессора - как бы вы узнали, предназначен ли if (FOO) для предварительной обработки или нет ?

16
ответ дан 5 December 2019 в 05:25
поделиться

Директивы препроцессора - это строки, включенные в код наших программ, которые не являются программными операторами, а являются директивами для препроцессора. Этим строкам всегда предшествует знак решетки (#). Препроцессор выполняется до начала фактической компиляции кода, поэтому препроцессор переваривает все эти директивы до того, как операторы сгенерируют какой-либо код.

Источник: http://www.cplusplus.com/doc/tutorial/preprocessor/

5
ответ дан 5 December 2019 в 05:25
поделиться

# - директива препроцессора. Препроцессор обрабатывает директивы для включения исходного файла ( #include ), определения макросов ( #define ) и условного включения ( #if ). Когда препроцессор обнаруживает это, он включает заголовки, расширяет макросы и переходит к компиляции. Его можно использовать для других целей, например, для остановки компиляции с помощью директивы #error. Это называется условной компиляцией.

2
ответ дан 5 December 2019 в 05:25
поделиться

Потому что # - стандартный префикс для введения инструкций препроцессора.

В ранних компиляторах C препроцессор был отдельной программой, которая обрабатывала все операторы препроцессора (аналогично тому, как ранние «компиляторы» C ++, такие как cfront, генерировали код C) и генерировали код C для компилятора (это может по-прежнему будет отдельной программой, но в настоящее время это может быть просто этап компилятора).

Символ # - это просто полезный символ, который может быть распознан препроцессором и обработан, например:

#include <stdio.h>
#if 0
#endif
#pragma treat_warnings_as_errors
#define USE_BUGGY_CODE

и так далее.

5
ответ дан 5 December 2019 в 05:25
поделиться

Это потому, что # является индикатором того, что его оператор препроцессора

означает, что перед компиляцией вашего кода он будет включать файл stdio.h

3
ответ дан 5 December 2019 в 05:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: