Intereting Posts
Как запретить пользователям вводить неверные данные? Несколько streamов OpenMP обновляют один и тот же массив Использование чтения с inotify выполнение процесса в фоновом режиме в c Как обнаружить нажатия клавиш в программе GUI Linux C без запроса пользователя? установить диалоговое окно, не изменяемое по размеру, или создать другое окно gtk Где найти полное определение типа off_t? как компилятор работает для оценки оператора sizeof в c Как / Почему imagedata хранится как char – OpenCV Использование clock () для измерения времени выполнения Почему полиморфные вызовы (например, слушатель в каутах) имеют анонимные аргументы, а не непрозрачные указатели и функции доступа? Неожиданный результат с cblas_dgemv Нужна библиотека общего назначения, чистая C OpenMP-распараллеливание вычисления pi либо медленное, либо неправильное Создание массива массивов int в C?

Printf не был объявлен в этой области

Я только начал изучать C. Но первая программа в книге, которую я имею в виду, порождает ошибку, которая «printf не была объявлена ​​в этой области»

Я набираю код точно так, как он указан в книге. Тем не менее возникает ошибка. книга

код

Компилятор не нашел объявления для printf . Вот почему он показывает ошибку компиляции.

Правильная декларация (ISO / IEC 9899: 1999) printf :

 int printf(const char * restrictformat, ... ); 

Вы можете либо объявить функцию, как указано выше, перед ее вызовом, либо включить header file содержащий объявление этой функции. Но было бы проще и безопаснее просто включать заголовочный файл, содержащий объявление вашей функции ( #include для printf ).

Если вы хотите узнать, почему вам нужно предоставить декларацию функции перед ее вызовом, вы можете взглянуть на этот вопрос . Объяснение приведено ниже:

Язык программирования C был разработан так, чтобы компилятор мог быть реализован как однопроходный компилятор. В таком компиляторе каждая фаза компиляции выполняется только один раз. В таком компиляторе вы не можете ссылаться на сущность, которая определена позже в исходном файле.

Более того, в C компилятор интерпретирует только единый блок компиляции (как правило, файл .c и все входящие в него файлы .h) за раз. Таким образом, вам нужен механизм для ссылки на функцию, определенную в другом модуле компиляции. Все идентификаторы в C должны быть объявлены до их использования. Это справедливо и для функций, и для переменных. Для функций декларация должна быть до первого вызова функции. Полное объявление включает тип возврата, количество и тип аргументов. Это также называется прототипом функции.

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

и подумайте о покупке новой книги. Автор должен был упомянуть о включении заголовка.

Книга устарела.

добавлять

 #include  

к вашей программе. Он предоставляет декларацию printf и многие другие функции. Для получения полного списка функций, определенных в файле, просмотрите его документацию .

printf() объявляется в файле заголовка stdio.h .

Добавьте это как первую строку вашей программы:

 #include  

Добавить

  #include 

в начале .c файла. Это заголовочный файл, который должен быть включен для каждой программы, которую вы пишете. Файл заголовка stdio.h содержит стандартное объявление функции ввода / вывода (например, printf и scanf)

Вы должны включить заголовочный файл: “stdio.h”