
Сообщение от
Sayman
я вижу что с языками вы слабо знакомы, особенно с языком си.
Очень весело слышать это, в особенности от Вас, уважаемый.
Хорошо. Ладно. Допустим даже, что Ваш макрос “помог”. Мы влезли в оба заголовочных "модуля", Офронта и винды, и вставили туда наше рулезное дополнение. Ибо одним "модулем" тут правка, видимо, ограничиться не может. Если может, блесните умом.
Но ещё и представим себе довольно вероятную возможность, что тип BOOLEAN внутри SYSTEM.h у нас является типом signed char, а тип BOOLEAN внутри windows.h – типом usnigned int.
Итак. Внутри windows.h мы имеем нечто такое:
Код:
#ifndef __BOOL
typedef unsigned int BOOLEAN;
#define __BOOL
#endif
Внутри SYSTEM.h же мы имеем нечто такое:
Код:
#ifndef __BOOL
typedef signed char BOOLEAN;
#define __BOOL
#endif
Наш весёлый "модуль" SYSTEM.c, думая, что тип BOOLEAN является однобайтовым, хотя его подленько уже могли подменить инклюдом windows.h перед инклюдом SYSTEM.h (а Си-прога, которая так сделает, может строиться Офронтом автоматически) на четырёхбайтовый, начинает юзать его во всю его однобайтовую душу. И – понесла нелёгкая, перекорёжив разрядность типов.
А наша весёлая программа могла бы конечно учесть, что BOOLEAN в таком разе – штука непростая, и надо выкурить много бамбуку, чтобы получить хоть какую-то осмысленную пользу от его использования, а ещё оно сильно вообще зависит от порядка инклюдирования "модулей" SYSTEM.h и windows.h, что ещё полбеды, а основная беда начнётся когда "модулям", берущим тип из SYSTEМ.h и windows.h, неявно подпихнут другой тип, их это должно здорово взбодрить.
Хорошо если программа сразу вылетит, а если не заметишь, и вылеты с порчей памяти и загадочным залезанием в чужие области и желанием выслать отчёт к какой-то матери регулярно будут у заказчика через месяц после сдачи?
Я как раз – об ощутимой помощи от использования Оберон-технологий в как можно более скорейшем выявлении такого рода узких мест. И чтобы влияние как закрытой реализации, так и открытой интерфейсной части одного модуля на другой сводилось к минимуму.