Важная информация

User Tag List

Страница 2 из 10 ПерваяПервая 123456 ... ПоследняяПоследняя
Показано с 11 по 20 из 99

Тема: "Умная линковка" в компиляторах

  1. #11
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,628
    Спасибо Благодарностей отдано 
    2,211
    Спасибо Благодарностей получено 
    143
    Поблагодарили
    109 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Sergey, спасибо. Это и правда может ускорить сборку библиотек. Будем экспериментировать.

    Dear Alcoholics Anonymous,

    In many ways you are right, and in many ways I agree with you. The difference between the two approaches is only in conceptual terms of thinking. So I think:

    Many functions = One module = One source file (.h and .c) => One library

    And you think:

    One function = One module = One source file
    Many functions = Many modules = Many source files => One library

    I affirm in the dispute with Q-Master, that the first approach is more typical for Pascal/Oberon-world, and the second is typical for C-world.

    So our discussion around this topic will be a dispute over paradigms and approaches: what assume a module? what assume a library? In general, I'm also against the spliting a C-source to pieces, but while SDCC has not support the feature, I need to have Pascal/Oberon point of view to this problem.

    Also I see no obstacles to develop object-oriented libraries for XDev in Oberon-2 (with help of "smartlib" too, of course).
    Последний раз редактировалось Oleg N. Cher; 11.06.2014 в 02:21.

  2. #12
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,259
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    36 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Наверное ты не заметил, что я говорил про старые компиляторы вообще, и про те, с которыми я работал, в частности. Перечитай пост, если от тебя это какбэ ускользнуло.
    Ну а Q-Master говорил про основные используемые компиляторы (сиречь, более-менее современные). Перечитай пост, если от тебя это какбэ ускользнуло.

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    А ещё ты наверно не обратил внимание, что я говорил про DJGPP для Windows, и я не знаю, слышал ли ты вообще про такую доработку данного компилятора от Макса Феоктистова. Я говорил не про DJGPP для DOS32, и мы можем очень продуктивно обсудить данный вопрос, только ты в этой специфической области будешь какбэ некомпетентен. Уточню, речь идёт про наличие возможности пихать в статическую библиотеку код с одного сишного файла-исходника таким образом, чтобы при линковке из библиотеки брались только используемые сущности.
    Я использовал djgpp для винды. ЕМНИП, оригинальный. В чем суть доработки?

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    P.S. Вот меня умиляет дикое количество здешних воинствующих сишников, не сделавших/адаптировавших ни одной библиотеки для Спека. А если я неправ, то ГДЕ ССЫЛКИ НА ЭТИ БИБЛИОТЕКИ?
    Я делал библиотеки для спека на ассемблере.
    Делал библиотеки для встроенных систем на С.
    Делал библиотеки для довольно широкого спектра оборудования на С++.
    Я воинствующий сишник?

  3. #13
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,628
    Спасибо Благодарностей отдано 
    2,211
    Спасибо Благодарностей получено 
    143
    Поблагодарили
    109 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vitamin Посмотреть сообщение
    Ну а Q-Master говорил про основные используемые компиляторы (сиречь, более-менее современные).
    А зачем в контексте обозначения части компиляторов, в которых эта проблема не решена, говорить про компиляторы, где она решается? Я какбэ не настаиваю на использовании утилиты smartlib во всех случаях, но только там, где это будет уместно.

    Цитата Сообщение от Vitamin Посмотреть сообщение
    Я использовал djgpp для винды. ЕМНИП, оригинальный. В чем суть доработки?
    Не знаю никакого DJGPP для винды, кроме MINGW. Ну и кроме патча Макса Феоктистова. Суть доработки в том, что оно - изначальное для DOS32 - заточено для генерации Win32 PE.

    Цитата Сообщение от Vitamin Посмотреть сообщение
    Я воинствующий сишник?
    Не знаю куда ты себя относишь, но мне лично бы хотелось чтобы люди вибрировали на частоте конструктивности и творчества, а не придирались к формулировкам, отстаивая собственную важность, даже если эти формулировки не очень точные.

    Нас с Сергеем смущает, что нас идут учить делать библиотеки люди, которые ни одной не сделали (имеются ввиду библиотеки для SDCC + ZX). Причём аргументируют тем, что какбэ, скорее всего, эта оптимизация в SDCC есть, они так думают - ну не может её не быть. Что грустно, потому что вопрос мною обнажён предельно, ибо обсуждался с Филиппом Краузе лично.

    Цитата Сообщение от Vitamin Посмотреть сообщение
    Поскольку здесь нет уточнения, то подразумеваются ВСЕ компиляторы, вне зависимости от года выпуска и целевой платформы. А это весьма снижает правдивость заявления, на что и указал Q-Master, не забыв привести критерий для рассматриваемого им круга компиляторов.
    Цитирую.

    Цитата Сообщение от Q-Master
    Ни один из основных используемых компиляторов на не8-битках при линковании исполняемого файла со статическими библиотеками не тянет все поголовно ф-ции, если они не используются. Не надо проецировать Борландовские поделия на все остальные компиляторы.
    Поясняю. Человек даже не совсем понимает специфику разговора, поскольку обсуждается возможность умной линковки библиотеки с одного исходника, а библиотеки в упомянутых им компиляторах построены на модулях из кусочков: одна функция = один исходник.

    Там я упоминал, что имею ввиду только добрую половину тех старых компиляторов, с которыми работал. И сюда не входят ни clang, ни Watcom. А откуда я могу знать, как дела обстоят там, если не видел.

    И перед тем, как продолжать флейм, надо определиться: мы будем дальше говорить за все компиляторы вперемешку, или только про перечисленные мной? И про "одна функция = один исходник (с возможностью умной линковки)" или про "один исходник = одна библиотека (с возможностью умной линковки)".
    Последний раз редактировалось Shadow Maker; 17.06.2014 в 20:09.

  4. #14
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,259
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    36 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    А зачем в контексте обозначения части компиляторов, в которых эта проблема не решена, говорить про компиляторы, где она решается? Я какбэ не настаиваю на использовании утилиты smartlib во всех случаях, но только там, где это будет уместно.
    В том и суть, что контекст не был обозначен ("все компиляторы"- слишком широко). Отсюда и весь сыр-бор.

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Не знаю никакого DJGPP для винды, кроме MINGW. Ну и кроме патча Макса Феоктистова. Суть доработки в том, что оно - изначальное для DOS32 - заточено для генерации Win32 PE.
    Вот опять- расхождение в терминологии. Под "для винды" я понимаю запускаемость бинарников тулчейна на винде, а не целевую платформу кодогенерации. Ибо тот же mingw бывает и "для линукса".
    А чем, собственно, mingw хуже пропатченного djgpp?

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Нас с Сергеем смущает, что нас идут учить делать библиотеки люди, которые ни одной не сделали (имеются ввиду библиотеки для SDCC + ZX). Причём аргументируют тем, что какбэ, скорее всего, эта оптимизация в SDCC есть, они так думают - ну не может её не быть. Что грустно, потому что вопрос мною обнажён предельно, ибо обсуждался с Филиппом Краузе лично.
    1) приведи примеры попыток "учить делать" (хотя бы от меня)
    2) приведи цитату, где утверждается (или хотя бы предполагается), что в SDCC такая оптимизация есть

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    библиотеки в упомянутых им компиляторах построены на модулях из кусочков: одна функция = один исходник.
    Это тебе кто сказал? Или ты исходником называешь секцию объектного файла?

  5. #15
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,628
    Спасибо Благодарностей отдано 
    2,211
    Спасибо Благодарностей получено 
    143
    Поблагодарили
    109 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vitamin Посмотреть сообщение
    В том и суть, что контекст не был обозначен ("все компиляторы"- слишком широко). Отсюда и весь сыр-бор.
    Неконструктивный сыр-бор, заметь. Он не был бы таким, если бы кто-нибудь составил список компилеров, которые соответствуют обозначенному критерию "умной линковки библиотеки с одного исходника".

    Цитата Сообщение от Vitamin Посмотреть сообщение
    Вот опять- расхождение в терминологии. Под "для винды" я понимаю запускаемость бинарников тулчейна на винде, а не целевую платформу кодогенерации.
    Но ты ведь не будешь отрицать, что можно говорить "для винды" и в контексте таргет-платформы?

    Цитата Сообщение от Vitamin Посмотреть сообщение
    А чем, собственно, mingw хуже пропатченного djgpp?
    Патч для DJGPP просто раньше появился, ещё до MINGW. А для меня он привлекателен по нескольким причинам, не касающимся данного топика.

    Цитата Сообщение от Vitamin Посмотреть сообщение
    1) приведи примеры попыток "учить делать" (хотя бы от меня)
    Привожу.
    Цитата Сообщение от Q-Master
    Второй вариант во-1 очень трудно поддерживаем, т.к. требует не статической либы с кучей скомпилированных .o файлов внутри, а какого-то адского гемороя по указыванию какие куски откуда надо выкусить и куда собрать ( с этим вполне справляется компилятор без необходимости в программисте). Во-2, такой вариант нечитаем. В-3, сборка проекта будет увеличена ровно на время разбиения мегасорца на куски и последущей компиляции этой помойки. В-4, ошибки при таком разбиении практически гарантированы и вызывают п.3 в полный рост КАЖДЫЙ раз. Могу предложить еще 3й вариант как компромисс между 1м и 2м:
    config.h с куче #define где указывается какие ф-ции надо компилировать из исходников, а какие нет. Вариант имеет часть недостатков 2го метода, ибо требует пересборки при каждом изменении в количестве используемых ф-ций.
    ( притом так и не пояснил, наверное потому, что это вызовет такую критику, что ой, притом не только от меня. )

    Цитата Сообщение от Vitamin Посмотреть сообщение
    2) приведи цитату, где утверждается (или хотя бы предполагается), что в SDCC такая оптимизация есть
    Привожу.
    Цитата Сообщение от Q-Master
    Как ведет себя в этом случае сдцц я не в курсе, но подозреваю что такой примитивный вариант оптимизации там осилили.
    Цитата Сообщение от Vitamin Посмотреть сообщение
    Это тебе кто сказал? Или ты исходником называешь секцию объектного файла?
    В SDCC так и есть: один исходник = секция = атомарная единица линковки. А ты прочёл сообщение от Alcoholics Anonymous и понял, какой именно способ представления библиотеки он отстаивает?

    Цитата Сообщение от Vitamin Посмотреть сообщение
    Вместо озвучивания уточнения "я имею в виду те старые компиляторы, с которыми имел дело" (снимающего все вопросы), ты продолжал лишь держать его в голове и спорить с теми, кто про данное уточнение не в курсе.
    Да я озвучивал, притом в нескольких сообщениях. Перечитай, раз запамятовал.
    Последний раз редактировалось Shadow Maker; 17.06.2014 в 20:14.

  6. #16
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,259
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    36 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Неконструктивный сыр-бор, заметь. Он не был бы таким, если бы кто-нибудь составил список компилеров, которые соответствуют обозначенному критерию "умной линковки библиотеки с одного исходника".
    Как минимум: gcc (с вышеупомянутыми опциями), msvc. Т.е. то, что ты уже перечислил. Т.е. сам себе спротиворечил.

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Но ты ведь не будешь отрицать, что можно говорить "для винды" и в контексте таргет-платформы?
    "Тулчейн под линукс для винды"- догадайся с одной попытки, что здесь имеется в виду.

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Привожу.
    А как отличить "пытался учить делать" от "делился опытом"?

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    А ты прочёл сообщение от Alcoholics Anonymous и понял, какой именно способ представления библиотеки он отстаивает?
    Да. Одна функция=один файл. Поскольку он ссылается на свой опыт, я сделаю то же самое: разбитие по аспектам и уровням абстракции гораздо более сопровождаемее. Если писать что-то сложнее "тыщи библиотечных функций", то вскоре застрелишься от беспричинной сложности.
    То, что линковщик не умеет выкидывать ненужное- это его проблема. Если вышележащее окружение умеет ее обходить (компилятор ли сам по секциям раскидывает или твоя тулза распиливает входной файл) незаметно для пользователя- все хорошо. Но если ограничения компилятора усложняют жизнь пользователя (причем настолько, что принуждает перестраивать сознание), лишают альтернатив (любитель писать каждую функцию в своем файле прекрасно будет пользоваться окружением с умным линковщиком), это категорически неправильно.

  7. #16
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #17
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,628
    Спасибо Благодарностей отдано 
    2,211
    Спасибо Благодарностей получено 
    143
    Поблагодарили
    109 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vitamin Посмотреть сообщение
    Как минимум: gcc (с вышеупомянутыми опциями), msvc. Т.е. то, что ты уже перечислил. Т.е. сам себе спротиворечил.
    И в чём же это противоречие?

    Цитата Сообщение от Vitamin Посмотреть сообщение
    А как отличить "пытался учить делать" от "делился опытом"?
    Делился опытом чего? Того, что мы с Сергеем уже делали, а он - нет? Кроме того, он не так и не пояснил свой способ в подробнностях. А я не вижу преимуществ в том, чтобы налепить #ifdef'ов и "выборочно компилировать" вместо "линий разреза" и smartlib.

    Цитата Сообщение от Vitamin Посмотреть сообщение
    Да. Одна функция=один файл. Поскольку он ссылается на свой опыт, я сделаю то же самое: разбитие по аспектам и уровням абстракции гораздо более сопровождаемее. Если писать что-то сложнее "тыщи библиотечных функций", то вскоре застрелишься от беспричинной сложности.
    Ну так а я о чём. В моём представлении модуль (или библиотека) - это группа связанных функций определённого назначения, которая может быть оснащена инициализатором и деинициализатором (в терминах ООП - конструктором и деструктором), вызов которых гарантирует корректную работу части (или вообще всех) функций модуля (библиотеки). Логическая связность функций подталкивает к связности представления и размещения их в одном исходнике. Впрочем, я не буду настаивать, делайте как удобно. Но делайте.

    Цитата Сообщение от Vitamin Посмотреть сообщение
    То, что линковщик не умеет выкидывать ненужное- это его проблема.
    Это проблема тех, кто делает библиотеки для SDCC исходя из концепта, который ты озвучил фразой выше.

    Цитата Сообщение от Vitamin Посмотреть сообщение
    Еще раз: в том сообщении, с которого начался спор (первое в этой теме), уточнения не было.
    Но разве не было ясно, что я не могу знать тонкостей всех компиляторов, а говорю только про те, которые юзал?

  9. #18
    Master
    Регистрация
    26.03.2005
    Адрес
    Ivanovo
    Сообщений
    640
    Спасибо Благодарностей отдано 
    5
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    1 сообщение
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Всем этим "аццким гемороем" занимается одна-единственная утилита smartlib и делает всё автоматически. Программисту остаётся только указать "линии разреза" между функциями, помещаемыми в библиотеку отдельно.

    Притом она, эта утилита, очень полезна не только для SDCC, но и для tcc, DJGPP для Windows и т.д. Кстати, по методу Макса Феоктистова можно собирать сверхмаленькие EXE и DLL размером от 1 кб. Т.е. они в принципе получаются небольшими, без специальных ухищрений.
    См. ниже. Утилита в целом-то не особенно и нужна.

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Во-2, вы лично не адаптировали ни одной библиотеки для SDCC и рассуждаете чисто теоретически?
    В чем состоит "адаптирование"?
    Нечитаемость заключается в том, что в 1 гигантском файле находится огромное количество функций, которые представляют из себя кашу с совершенно разным функционалом никак не разделенную. В результате понять где что находится и как работает - то еще приключение.
    Я говорю это все не голословно, а исключительно с точки зрения большого опыта.

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Называю нехорошим словом то, что мне не нравится, да?
    А как еще назвать то, во что превращается банальная компиляция 1 исходника? Реально получается мегапомойка из кучи *.c файлов с кучей ненужных инклюдов и прочего.

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    К слову, да, собирает дольше. Ну а как иначе. Но дольше не из-за разбивки, она происходит мгновенно. Дольше из-за того, что каждый кусок при сборке тянет свои хидеры, компилятору их надо заново парсить, это требует времени, в т.ч. и в случае варианта 1 от Sergey.
    См. ниже. Проблема решается красивше, но не лучше.

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Да чушь вы говорите. Разрабатываю библиотеки уже годами, ноль проблем. А вот пока не изобрёл такой способ - здесь некоторые товарищи бухтели про то, что "этот долбанный SDCC ещё и всё из библиотек тянет, оказывается, ай-яй-яй какой он нехороший".
    Вы изобрели велосипед, причем с квадратными колесами и без педалей. Куда раньше велосипед изобрели писатели libtool.

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Поясните.
    Поясняю. Все элементарно и давно придумано в libtool. Решение простое и не требует никаких лишних "линий разреза" и утилит и решается исключительно компилятором (точнее пре-процессором).
    Идея следущая:
    в начале xxx.h подключается config.h в котором на каждую используемую ф-цию добавлена 1 строчка #define USE_XXXX 1 либо #undef USE_XXXX
    в самом xxx.h и в xxx.c перед каждым определением и реализацией ф-ции стоит #ifdef USE_XXXX и в конце #endif. Полностью убирает проблему с резьбой мегафайла на кучу мелких и жутких тормозов компиляции. Не решает проблему гигантского сорца.

  10. #19
    Veteran Аватар для Oleg N. Cher
    Регистрация
    24.08.2007
    Адрес
    Днепропетровская обл.
    Сообщений
    1,628
    Спасибо Благодарностей отдано 
    2,211
    Спасибо Благодарностей получено 
    143
    Поблагодарили
    109 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Q-Master Посмотреть сообщение
    См. ниже. Утилита в целом-то не особенно и нужна.
    Вам - конечно не особенно нужна, потому что вы не делаете библиотек для SDCC.

    Цитата Сообщение от Q-Master Посмотреть сообщение
    В чем состоит "адаптирование"?
    В том, чтобы это собиралось и работало. И могло быть вызвано из сишного кода.

    И когда мы говорим об адаптировании библиотек к SDCC, мы имеем ввиду что нам не тычут в носик асмовский исходник, а причёсывают его, переводят в синтаксис sdasz80, снабжают высокоуровневым интерфейсом, возможно, адаптируют передачу параметров, оптимизируют и, наконец, отлаживают. А если по канонам ZXDev, то ещё можно и соединить несколько сходных функций в одну с конфигуратором, за счёт чего достигается гибкость разработки. Подробнее здесь.

    Цитата Сообщение от Q-Master Посмотреть сообщение
    Нечитаемость заключается в том, что в 1 гигантском файле находится огромное количество функций, которые представляют из себя кашу с совершенно разным функционалом никак не разделенную.
    Во-первых я вообще нигде не предлагал пихать все функции в мире в одну библиотеку, это вы только что придумали и приписываете мне.

    Во-вторых ясно, что сцеплять надо сходные функции, чтобы был цельный взгляд на библиотеку. Посмотрите внимательнее. Есть библиотека Basic, которая содержит реализацию операторов ZX-Basic. Это гигантская помойка не связанных между собой функций? Далее, Laser - функции Laser Basic, и т.д.

    В-третьих ваша сентенция "никак не разделенную" никак не может быть истинной, потому что я уже много раз талдычил про "линию разреза".

    Цитата Сообщение от Q-Master Посмотреть сообщение
    В результате понять где что находится и как работает - то еще приключение.
    Интересный аргумент. То есть если файлов с функциями, которые даже связаны логически, большая куча, то понять где что находится и как работает - легко. Но если они вдруг в одном исходнике, то это становится большой проблемой.

    Цитата Сообщение от Q-Master Посмотреть сообщение
    А как еще назвать то, во что превращается банальная компиляция 1 исходника? Реально получается мегапомойка из кучи *.c файлов с кучей ненужных инклюдов и прочего.
    Я как раз критикую кучу *.c файлов. А знаете чем отличается куча файлов z88dk или, например, библиотек Сергея от моих? А ничем. Только у меня они имеют другие имена:

    Basic_001.c
    Basic_002.c
    Basic_003.c
    ...

    И носят временный (temporary) характер, т.е. удаляются после сборки библиотеки. В случае успешной сборки юзер может даже не заметить эту "кучу файлов". В случае же мультифайловости он не просто их заметит, а сломает об них и копья, и мозг.

    Цитата Сообщение от Q-Master Посмотреть сообщение
    Вы изобрели велосипед, причем с квадратными колесами и без педалей.
    Я вот чего не пойму. Вы критикуете "большую кучу файлов" и способ z88dk и Сергея или мой и smartlib? Если последнее, то я не хочу и не собираюсь пихать каждую функцию в отдельный файл. Это антиоберонский путь. И античеловеческий.

    Но, кстати, я сам связываю несколько обероновских модулей в одну библиотеку, это возможно. Притом без бубна, достаточно доброй воли и утилиты smarlib. Но и её я никому не навязываю, просто предлагаю кому нужно. Не вам, Q-Master. Я уже понял, что библиотек для SDCC вы делать не будете.

    Цитата Сообщение от Q-Master Посмотреть сообщение
    Идея следущая:
    в начале xxx.h подключается config.h в котором на каждую используемую ф-цию добавлена 1 строчка #define USE_XXXX 1 либо #undef USE_XXXX
    в самом xxx.h и в xxx.c перед каждым определением и реализацией ф-ции стоит #ifdef USE_XXXX и в конце #endif. Полностью убирает проблему с резьбой мегафайла на кучу мелких и жутких тормозов компиляции. Не решает проблему гигантского сорца.
    Ну вот. Вы предложили "разрезание без разрезания", фактически то же самое, что и я, только более сложным способом. И потом, зачем мне вражеская libtool вместо моей крохотной smartlib, к которой Ofront я уже адаптировал.

    Видите ли, в чём ещё проблема, Q-Master. Я компиляю сишные исходники, сгенерированные автоматически Ofront'ом. Поэтому вариант допихивать в них потом ручками #ifdef'ы выглядит абсолютно искусственно. Но это ещё полбеды, у варианта с libtool хватает и других недостатков.

    Кстати, обероновский подход не одобряет огромные модули, наоборот, поощряются мелкие. Так что ваши попытки приписать мне идею запихивания всего-чего-можно в один мегаисходник тоже идут мимо. Истина как всегда где-то посередине.
    Последний раз редактировалось Shadow Maker; 17.06.2014 в 20:16.

  11. #20
    Activist
    Регистрация
    21.12.2005
    Адрес
    Kyiv/Ukraine
    Сообщений
    415
    Спасибо Благодарностей отдано 
    7
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alcoholics Anonymous Посмотреть сообщение
    Library code must be broken into the smallest functions that make sense and those individual functions must be contained in their own files
    Да,я я так и делал изначально, у себя в sdcc framework.
    Пример (либа для вызова FLOS функций из Си кода)
    http://sourceforge.net/p/v6z80p/code...terface_for_c/

    ---------- Post added at 16:47 ---------- Previous post was at 16:38 ----------

    Цитата Сообщение от Oleg N. Cher Посмотреть сообщение
    Я компиляю сишные исходники, сгенерированные автоматически
    "сгенерированные автоматически" - ключевое слово
    Конечно нужно сгенеренный Си файл как-то нарезать на более мелкие файлы .
    (а о чем спор, я так и не понял)
    Последний раз редактировалось Valen; 11.06.2014 в 17:49.
    V6Z80P - Back for Good

Страница 2 из 10 ПерваяПервая 123456 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 17
    Последнее: 26.12.2015, 23:22
  2. Ответов: 19
    Последнее: 30.09.2011, 03:08
  3. Ответов: 0
    Последнее: 15.08.2010, 14:38
  4. Ответов: 18
    Последнее: 27.08.2008, 20:27
  5. Ответов: 6
    Последнее: 20.11.2007, 11:29

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •