Wataru, Хорошо, в современном стандарте уже в одной единице трансляции определение функции является сразу и объявлением. А на счет того что функция нужно определить первее чем её использовать, ну да это так.
Блин что, то я вроде и понятно. Ноо...
И ещё иногда странно когда говорят, компилятору достаточно того что он знает тип функции и параметры, а то что она делает не важно ? (или это уже имеется ввиду что компилятор знаю тип и параметры уже знает где её тело ?).
Ну это мы больше про один файл говорили. Но вот опять же почему чтобы в main.c использовать функции из math_functions.c нужны определения функций ? Ну хорошо нужны эти определения, так давайте я их определю в самом math_fanctions.c. И все компилятор будет знать определения функций? Или что тут против этого выступает, какое-то другое правило ? Что-то типа плохо включать через #include "math_function.c" нужно именно ".h" или что?
Потом ещё начинает путать немного путает переменные, структуры и enum. Их тоже вот в headers нужно определить как ссылку на то что они существуют. Ну ладно про это потом.
Для того, чтобы использовать в main.c функцию, определенную в math_functions.c, вам надо иметь ее объявление в main.c
Вот тут тоже кое что я не понимаю, зачем ? в main.c иметь объявления функций из math_functions.с? Чисто для того чтобы компилятор понимал что есть такая та функция с такими то параметрами ? Но зачем если ей известно уже вся функция и заголовок и тело. Или это просто так надо ?
Это почти похоже на то что к примеру в одном файле к примеру test1.c
#include <stdio.h>
double sqr(double a);
int main(void)
{
return 0;
}
double sqr(double a)
{
return a*a;
}
Вот простите конечно, но как же меня бесит, почему писать определение функции на верху, если можно сразу написать её объявление ?
Вы правы! Я то привык задавать вопросы в форумах и ждать ответы, когда вы скинули крутой справочник про заголовочный файл. Сейчас МАКСИМАЛЬНО внимательно и подробно прочитаю.