2016-07-25 5 views
-2

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

Я печатая точно так же, как в книге. Тем не менее возникает ошибка. book

code

+2

Пожалуйста, бросьте, что книга YK прочь .......... Это не принесло пользы ни одному из программистов. –

ответ

1

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

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

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

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

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

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

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

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

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

7

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

Добавить

#include <stdio.h> 

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

+0

Я написал книгу, которую я читал в 1998 году. –

+0

Вы можете найти man-страницы функций, чтобы выяснить, какой стандартный заголовочный файл должен быть '# include'd, чтобы получить объявление функции. Вы также можете отказаться от онлайн-ресурсов, таких как http://en.cppreference.com/w/c. –

+1

Я бы не сказал, что книга устарела. Писатель просто предположил, что все знают о заголовке библиотеки, поэтому он не упоминается явно (многократно избыточно). – kurakura88

3

printf() указан в файле заголовка stdio.h.

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

#include <stdio.h> 
+0

printf не определен в файле заголовка stdio.h, он определен в функции libc – Ash

+0

К сожалению. Спасибо за редактирование @Mohit – CinCout

1

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

2

Добавить

#include<stdio.h> 

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

Смежные вопросы