[a / aa / ad / au / b / bg / bo / c / d / dg / di / ew / f / fa / fd / fg / fi / fl / g / gg / h / ho / hr / ja / k / ls / m / ma / me / mo / mu / n / ne / o / p / pa / ph / pr / r / re / s / sp / t / td / tr / tv / u / vg / w / wh / wm / wp / y] - [Главная]

[Назад]
Ответ
(оставьте это поле пустым)
Имя (оставьте это поле пустым)
E-mail
Тема
Комментарий
Файл
Перейти к
Подтверждение обновить captcha
Пароль (чтобы удалить пост или файл)
  • Разрешённые типы файлов: GIF, JPG, PNG
  • Максимальный размер файла 1536 килобайт и 2048×2048.
  • Изображения размером более 200x200 точек будут уменьшены.

Файл: 1245920053511.jpg -(6кб, 100x100) Показана уменьшенная копия, оригинал по клику.
6 №1345  

Программач, обьясни, пожалуйста, следующую вещь: Си. Создается файл с функцией мейн, туда включается самодельный заголовочный файл, в котором есть прототип функции. Когда в мейн функция используется, идет обращение к заголовочному файлу, но откуда заголовочный файл с одним прототипом знает где хранится описание функции?

>> №1348  

#include <anything.h> аналогично тупому копированию текста anything.h в твой исходник. Так понятнее?

>> №1350  

В anything.h содержится прототип функции. Когда включаю этот файл - в код копируется прототип. Но не понятно как программа понимает где находится описание функции, если в anything.h есть только прототип функции, и не содержится ссылок на описание.

>> №1351  

Описание функции в коде есть вообще?

>> №1352  

http://ru.wikipedia.org/wiki/Прототип_функции
Читал?

>> №1354  

>>1351
Есть, забыл сказать. В заголловочном файле прототип, в другом файле описание, в третьем - включеный заголовочный файл и функция мейн. Но я уже во всём разобрался, прочитал про библиотеки. Спасибо.

>> №1355  

>>1345
есть такое понятие, как трансляция кода. это перевод высокоуровневых инструкций в инструкции ассемблера. и вот, когда твоя функция, прототип которой описан, переводится на ассемблер, — ей назначается своя метка. далее, все вызовы этой функции сводятся к инструкции CALL метка.
Проблема тут может заключаться в том, что, если ты используешь готовую библиотеку (т.е. архив "чужих" объектных файлов), описание параметров ее функций ложится на твои плечи, т.к. в библиотеке описано, максимум, название функции и размер стекового фрейма для ее параметров.
Собственно заголовок функции нужен для того, чтобы ты одинаково мог использовать как "свой" код, для которого у тебя есть исходник (который компилируется, например, в объектные файлы main.o, myfuncs.o и т.д.), так и "чужой", который может содержаться в самих объектных файлах, а может и не содержаться, при этом в объектном файле делается пометка, что функция эта — external, и ей нужна динамическая библиотека такая-то.



Удалить пост []
Пароль
[a / aa / ad / au / b / bg / bo / c / d / dg / di / ew / f / fa / fd / fg / fi / fl / g / gg / h / ho / hr / ja / k / ls / m / ma / me / mo / mu / n / ne / o / p / pa / ph / pr / r / re / s / sp / t / td / tr / tv / u / vg / w / wh / wm / wp / y] - [Главная]