Определением и объявлением переменной являются две различных, но связанных операции.
Если вы задаете функцию, это означает, что тело функции является written: int f(void) { return 0; }
Если вы задаете переменную, это означает, что часть памяти резервируется для variable: int x; or extern int x=0;
Когда переменная не задана, программное обеспечение полагает, что переменная инициализируется и имеет потенциально любое значение в своем полном спектре.
Когда функция не задана, программное обеспечение блокирует функцию.
Объявление функции: int f(void);
Объявление переменной: extern int x;
Объявление предоставляет информацию о типе функции или переменной. Если вы используете функцию или переменную в файле, где это не было объявлено, ошибка компиляции заканчивается.