Hello, Dimmy Timchenko! You wrote in conference fido7.ru.embedded to Alex Mogilnikov on Fri, 21 Oct 2005 01:53:58
+0400:
DT> Hello Alex.
DT> Fri Oct 21 2005 02:35, Alex Mogilnikov wrote to me:
DT>>> реализации, секция инициализации). Там, где хочешь этим DT>>> модулем воспользоваться, просто пишешь
DT>>> uses DT>>> MyNiceModule;
AM>> Это если некий внешний модуль используешь в паскалевском.
DT> Hет, это всё паскалевское. :) Чтобы прилинковать что-то, DT> написанное на C или ассеблере, надо вручную указывать файл, DT> который надо линковать и список внешних процедур/функций.
Ну это и в Паскале делается в интерфейсной секции. В некоторых реализациях - это отдельный файл, ничем по сути от .h не отличающийся.
AM>> А если наоборот, паскалевский модуль надо использовать где-то AM>> еще?
Тогда ничего не остается, как возвращаться к той же принятой и в других языках структуре. Интерфейсный (.h) файл, объектник, библиотека объектников. В ТР на это забили и использовать на нем написанное в других проектах невозможно. В других реализациях пошли более разумным путем.
DT> Hапример, где? :) Ты в своих проектах много "иноязычных" DT> модулей - кроме ассемблерных - используешь?
Я использовал в паскалевских программах и ассемблерные и сишные модули. Причем много и неоднократно.
DT>>> И всё, что описано в интерфейсной секции модуля DT>>> MyNiceModule, становится видимым в использующем коде (похоже DT>>> на namespaces).
AM>> У меня и без Паскаля все делается автоматически. В Makefile я AM>> перечисляю используемые модули:
AM>> SRC = module1 module2 module3
DT> :))) Hу ты ж их руками перечисляешь и в отдельном файле. И DT> H-файлы тебе надо не забыть писать и включать куда надо.
А uses mod1, mod2, mod3, причем разные в интерфейсе и в реализации описывать не надо в ручную? И тоже надо не забыть и включать не куда попало, а куда надо.
DT> А я всю нужную для линковки информацию указываю в исходниках.
А make файл не является частью исходников?
DT> Впрочем, конечно, это вопрос вкуса: по сути-то эти методы DT> эквивалентны.
Отож.
DT>>> Причём прилинкуется только тот код, который ты DT>>> действительно используешь
AM>> И это у меня происходит автоматически - все объектные файлы в AM>> директории помещаются в архив (библиотеку), а библиотеки AM>> отдаются линкеру, откуда он берет только те файлы, на символы AM>> которых есть ссылки.
DT> Hо ты это сделал вручную, настраивая make, линкер, читая доки, DT> получилось не сразу и так далее? :)
В каком смысле не сразу? А на других языках программы сразу пишутся, или можно без чтения документации узнать какие модули и где надо включать?
DT> А в паскалевских компиляторах это всё встроенное и часть языка.
Причем языка нестандартного. По которому все равно надо читать документацию.
AM>> А у меня некоторые проекты компилируются несколько минут.
DT> Во-вторых, паскалевские компиляторы, особенно TP/BP - очень DT> быстрые. :)
Потому что очень глупые, оптимизаций и изысками в кодогенерации себя не утруждающие. Да и язык более простой, чем С.
dima
formatting link