Проект windows.inc

Тема в разделе "WASM.HEAP", создана пользователем Rockphorr, 4 сен 2006.

  1. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.623
    Адрес:
    Russia
    Всем хорошо известен данный проект на www.masm32.com.
    Реальный результат проекта это файл размером больше 1 mb c примитивной структурой (все просто свалено в одну кучу). Мне уже очевидны грядущие трудности его сопровождения.

    Быть может на его основе организовать альтернативный проект на wasm.ru обладающий более продуманной структурой и состоящий из нескольких файлов включаемых в windows.inc?

    Думаю что для начала полезно выделить значения всех сообщений в отдельный файл и сгрупировать их по значениям в соответствии win32.hlp Аналогично со структурами.
    Директивы includelib пестреющие в начале каждого нового проекта я бы перенёс в соответствующий библиотеке inc файл

    Хатч от подобных мероприятий отказался по принципу наименьших телодвижений - "делай это проще дурачок".
     
  2. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    какая польза от большого количества файлов?
     
  3. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Asterix
    Легче искать и добавлять объявления. Тебе бы понравился windows.h размеров 50 мб, в котором весь PSDK? И интересно, как к нему отнёсся бы компилятор.

    Rockphorr
    В фасме отдельно файлы. И по мере надобности я добавляю к своим очередные порты из PSDK. Тем более, это становится всё проще.
     
  4. Pinkbyte

    Pinkbyte Member

    Публикаций:
    0
    Регистрация:
    3 сен 2006
    Сообщения:
    106
    Идея неплоха, но копаться в структурах, сделанных hutch - ещо то удовольствие... Хотя идея и полезна, но... Принять участие я вряд ли смогу - я лучше направлю усилия на изучения асма, а не оптимизацию инклудов

    P. S. Я вообще вынес все инклуды в программе(а также обьявление режима процессора, модели памяти и прочее) в отдельный файлик и делаю только include header.inc (так как в Masm неиспользуемые библиотеки не линкуются, то все путем)
     
  5. Mescalito

    Mescalito New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2005
    Сообщения:
    78
    Адрес:
    Харьков
    Обычно большинство структур и констант (пишу на fasm) определяю вручную, копирую в начало кода или в отдельный инклудник, если их слишком много. Определения, правда, беру из windows.inc или сишных заголовочных.
    Имхо - так лучше понимаешь собственную программу
     
  6. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Ну и что получится? Второй сишный бардак. Чтобы найти объявление структуры или константы, приходится скакать по десятку разных файлов. В девяти хидерах ничего кроме ссылки на следующий хидер:
    #ifndef _BLA_
    #include <something_01.h>
    #endif
    нету. А полезная инфа только в десятом файле. И пока доберешься до нужного, всё на свете проклянёшь.
    Трудно придумать более глупую систему, чем дробить цельное на куски.
    А в windows.inc все под рукой. Да и F3 для кого придуман? И для чего? Чтобы не листать вручную мегабайт.

    К тому же этот мегабайт раскидать по разным файлам - он что меньше станет? Наоборот. Плюс неизбежная путаница: а где у меня лежит такая-то структура, и в каком файле спрятана некая константа?
    Пользуйтесь F3 и будет вам счастие.
     
  7. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    cresta
    Как раз не путаница - путаница, когда всё в куче. А так структуры и константы сгруппированы по сфере использования - user, shell, advapi и т.п. А для поиска grep никто не отменял, да и в PSDK всё описано.
     
  8. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    IceStudent
    именно путаница, когда в инклудах куча переопределений, пока всю цепочку разберешь..
     
  9. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Если определения в одном файле, мне всё равно, в каком порядке они там расположены. Хоть в алфавитном порядке, хоть сгруппированые по признакам user/shell/kernel, хоть перемешаные в случайном порядке. Разницы никакой. И никакого неудобства. Потому что в любом случае я для поиска буду использовать F3. А ему всё равно, что и в каком порядке расположено.

    В сишных инклюдах чтобы найти что-то, мне надо знать, к какой группе константа или структура относится. Чтобы примерно локализовать область поиска. Те константы, структуры и объявления, которые я помню по памяти, я нахожу достаточно быстро и в сишных инклюдах. Но дело в том, что те, которые я помню наизусть, мне не нужно искать. Искать приходится те, с которыми сталкиваешься в первый раз. А вот их местонахождение - совсем не очевидная вещь. И начинается беготня по файлам.
    Кроме того, разбиение на мелкие файлы неизбежно приводит к появлению ветвлений и затычек #ifndef-#ifdef. Посмотрите любой сишный инклюд - половина текста в них - это затычки и переопределения. И при этом регулярно возникают undefined symbol и symbol redifinition.
    Особенно показательны в этом смысле инклюды DDK. Сплошной маразм. Хорошо хоть есть виндовый поиск по тексту внутри файла, единственное спасение. Но и с ним приходится вручную отслеживать цепочки инклюдов, по пути исправляя ifdef на ifndef и наоборот.
    Или вы не сталкивались с исходниками, в которых несколько экранов листаются эти ifdef'ы, и в самом конце пара строчек с непосредственно кодом? Это всё издержки дробления.

    Хотя если вы мазохисты, кто может вам помешать? Дробите на мелкие части и получайте своё удовольствие :))))
     
  10. Jupiter

    Jupiter Jupiter

    Публикаций:
    0
    Регистрация:
    12 авг 2004
    Сообщения:
    532
    Адрес:
    Russia
    давеча обновлял Windows.inc, добавляя в него константы ресурсов (RT_MANIFEST etc), для этого просто нашёл RT_ICON и добавил после RT_HTML. соответствующий .h файл - WinUser.h, найти так же просто, как и случае одного-единственного файла: маска *.h, искать текст "RT_ICON". так что разницы особой нет, если искать с умом - найдётся любое камно в помойке .inc и .h
    в крайнем случае помогает MSDN, т.к. пишет, в каком .h лежит описание.
    в итоге (если вам так хочется), можете разбить всё содержимое Windows.inc по файлам с неким смыслом, т.к. всегда будет возможность собрать это в один Windows.inc ;)))
     
  11. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.623
    Адрес:
    Russia
    cresta
    Я предлагаю прежде чем дробить подумать КАК и СКОЛЬКО частей должно быть
    Мне пока очевидноа только целесообразность выделения сообщений в отдельный файл и групировка их по значениям согласно win32sdk.hlp
    Я с экранами IFDEF не сталкивался так как вообще не люблю С и С++ - популярность их зиждится на средствах работы с указателями, хотя наглядности ветвлений никакой глаза сломаешь пока поймешь что куда
     
  12. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    Rockphorr
    Не могу понять, для чего это нужно?
    Чтобы сократить размер? Суммарный размер однозначно вырастет.
    Чтобы удобнее ковыряться в инклюдах в поисках объявлений? В инклюдах должен ковыряться компилятор, а ему всё равно 1 Мб или 100 х 10 Кб. Даже с одним файлом ему значительно проще.
    А для программера существует msdn/psdk, где всё и так уже давно структурировано и разложено по полочкам. Там и ищем структуры с объявлениями.
    Или охота оставить след в истории? Ну в таком случае конечно :)))
     
  13. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    cresta
    всё равно 1 Мб или 100 х 10 Кб.
    Например, программа простая, ей не нужны shell, ole, socket и т.п., то уже не 100.

    Rockphorr
    Быть может на его основе организовать альтернативный проект
    imho пустая трата времени.
    + не любишь Си и Си++ - не надо болтать про них глупости.

    2 admin's
    Переносите тему в heep или project.
     
  14. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.623
    Адрес:
    Russia
    cresta
    чтобы проще было его сопровождать и вносить изменения
    то есть было очевидно куда это добавить
    + как правильно сказал q_q
    не всегда он нужен целиком

    q_q
    пустая только потому, коллективную работу тут организовать практически невозможно
    и вместо классного инструмента получится туфта

    я глупостей не говорил я выразил лишь свое мнение он наглядности листингов
    без претензий на абсолютную истину
     
  15. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    Rockphorr
    пустая только потому, коллективную работу тут организовать практически невозможно
    Пустая трата времени, потому что не сформулирована цель. Невозможность организовать коллективную работу - это следствие отсутствия цели. Сформулируй цель, которая была бы интересна и/или являлась стимулом. "Более продуманная структура и несколько файлов" - это средства достижения цели, а какова цель?

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

    я выразил лишь свое мнение он наглядности листингов
    А как же: "... популярность их зиждится на средствах работы с указателями ...", или это не ты?
     
  16. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.623
    Адрес:
    Russia
    Это и есть моё мнение
    Сомневаюсь что все прочие его прелести вместе взятые дали бы ему такую поулярность
    Так например все паттерны из лежащего тут фрагмента книги основаны на работе с указателями