Я только начал изучать С. Но первую программу в книге, которую я имею в виду сгенерирует ошибку, что «Printf не был объявлен в этой области»Printf не был объявлен в этой области
Я печатая точно так же, как в книге. Тем не менее возникает ошибка.
Я только начал изучать С. Но первую программу в книге, которую я имею в виду сгенерирует ошибку, что «Printf не был объявлен в этой области»Printf не был объявлен в этой области
Я печатая точно так же, как в книге. Тем не менее возникает ошибка.
Компилятор не нашел объявления для функции printf
. Вот почему он показывает ошибку компиляции.
Правильная декларация (ISO/IEC 9899: 1999) в printf
функции:
int printf(const char * restrictformat, ...);
Вы можете объявить функцию как выше перед вызовом, или вы можете включить header file
, который содержит объявление этой функции. Но было бы проще и безопаснее просто включить заголовочный файл, содержащий объявление вашей функции (#include <stdio.h>
для printf
).
Если вы хотите узнать, почему вам нужно предоставить декларацию функции перед ее вызовом, вы можете взглянуть на это question. Объяснение приведено ниже.
Язык программирования C был разработан таким образом, что компилятор может быть реализован как однопроходный компилятор. В таком компиляторе каждая фаза компиляции выполняется только один раз. В таком компиляторе вы не можете ссылаться на сущность, которая определена позже в исходном файле.
Кроме того, в C компилятор интерпретирует только единый блок компиляции (как правило, файл .c и все входящие в него файлы .h) за раз. Таким образом, вам нужен механизм для ссылки на функцию, определенную в другом модуле компиляции. Все идентификаторы в C должны быть объявлены до их использования. Это справедливо и для функций, и для переменных. Для функций декларация должна быть до первого вызова функции. Полное объявление включает тип возврата, количество и тип аргументов. Это также называется прототипом функции.
Вы также можете определить функцию перед ее вызовом в одном модуле компиляции. Или вы можете просто объявить его, прежде чем называть его. Лучше идея (не всегда) включать заголовочный файл, который содержит объявление функции.
и подумайте о покупке новой книги. Автор должен был упомянуть о включении заголовка.
Книга устарела.
Добавить
#include <stdio.h>
к вашей программе. Он предоставляет декларацию printf
и многие другие функции. Для получения полного списка функций, определенных в файле, найдите its documentation.
Я написал книгу, которую я читал в 1998 году. –
Вы можете найти man-страницы функций, чтобы выяснить, какой стандартный заголовочный файл должен быть '# include'd, чтобы получить объявление функции. Вы также можете отказаться от онлайн-ресурсов, таких как http://en.cppreference.com/w/c. –
Я бы не сказал, что книга устарела. Писатель просто предположил, что все знают о заголовке библиотеки, поэтому он не упоминается явно (многократно избыточно). – kurakura88
Вы должны включить заголовочный файл: "stdio.h"
Добавить
#include<stdio.h>
в начале .c файл. Это заголовочный файл, который должен быть включен для каждой программы, которую вы пишете. Файл заголовка stdio.h содержит стандартную декларацию функции ввода/вывода (например, printf и scanf)
Пожалуйста, бросьте, что книга YK прочь .......... Это не принесло пользы ни одному из программистов. –