Программач, обьясни, пожалуйста, следующую вещь: Си. Создается файл с функцией мейн, туда включается самодельный заголовочный файл, в котором есть прототип функции. Когда в мейн функция используется, идет обращение к заголовочному файлу, но откуда заголовочный файл с одним прототипом знает где хранится описание функции?
#include <anything.h> аналогично тупому копированию текста anything.h в твой исходник. Так понятнее?
В anything.h содержится прототип функции. Когда включаю этот файл - в код копируется прототип. Но не понятно как программа понимает где находится описание функции, если в anything.h есть только прототип функции, и не содержится ссылок на описание.
Описание функции в коде есть вообще?
http://ru.wikipedia.org/wiki/Прототип_функцииЧитал?
>>1351Есть, забыл сказать. В заголловочном файле прототип, в другом файле описание, в третьем - включеный заголовочный файл и функция мейн. Но я уже во всём разобрался, прочитал про библиотеки. Спасибо.
>>1345есть такое понятие, как трансляция кода. это перевод высокоуровневых инструкций в инструкции ассемблера. и вот, когда твоя функция, прототип которой описан, переводится на ассемблер, — ей назначается своя метка. далее, все вызовы этой функции сводятся к инструкции CALL метка.Проблема тут может заключаться в том, что, если ты используешь готовую библиотеку (т.е. архив "чужих" объектных файлов), описание параметров ее функций ложится на твои плечи, т.к. в библиотеке описано, максимум, название функции и размер стекового фрейма для ее параметров.Собственно заголовок функции нужен для того, чтобы ты одинаково мог использовать как "свой" код, для которого у тебя есть исходник (который компилируется, например, в объектные файлы main.o, myfuncs.o и т.д.), так и "чужой", который может содержаться в самих объектных файлах, а может и не содержаться, при этом в объектном файле делается пометка, что функция эта — external, и ей нужна динамическая библиотека такая-то.
- wakaba 3.0.8 + futaba + futallaby -