RU/2: Форум. Общение пользователей и разработчиков OS/2 (eCS). : Может я не прав, но..


Список сообщений | Написать новое | Ответить на сообщение | Домой Поиск:
Предыдущее сообщение | Следующее сообщение
From : LightElf
To : Slavik Gnatenko
Subj : Может я не прав, но..

> > Компилятор скажет, что у тебя имеет место Macro redefinition и укажет в каком файле и месте.
> Ну это если таки macro и таки redefinition. Аффтар инклюда может и undef предварительно сказать. А недавно долго чесал затылок, почему у меня функция описана в общем инклюде, используется, прилинкована и при этом ошибка. Вскрытие показало затесавшийся в одном из случаев #define bool int. Аффтарам OpenVPN пламенный привет.Теперь у меня после их инклюдов втыкается undef bool и он опять начинает быть логическим типом.

С точки зрения препроцессора любой define есть макро. Ватком конкретно говорит, что definition of macro <bla-bla> not identical to previous definition и это есть ошибка. Что же касается #define bool int - аффтарам OpenVPN низачот. Описывать типы через #define - это таки клиника.

> > > Или случай, когда в двух используемых библиотеках имеются одноимённые функции - тоже кровь попортить может.
> > Линкер тебе сообщит, что имеются одноименные функции (укажет имена) в двух либах (укажет либы) и чего-то некругло.
> Это он с явно указаными объектниками скажет, потому что их таки надо слинковать все. А с либами просто возьмёт первую по пути (и то не всегда). У меня даже заметной величины либа есть, которую надо ставить перед kLibc, чтобы в ней некоторые функи заместить. А недавно была кора: проект компилится под динамическую libc, но использует либу, собраную под статическую. Всё это чудесно работало, пока не был достигнут определённй уровень сложности. Потом продолжило линковаться, но стало валиться на ините этой самой libc по SYS3175. Имел день в отладчике, чтобы понять какого и как лечить.

Гм. Играешься с либами - изучай MAP-файл :) Чем в данном контексте конкретно C виноват - непонятно. Та же шняга будет с любым другим языком.

> > > В общем, заниматься написанием надёжных программ на подобном языке я бы не стал - здоровье дороже.
> > Поскольку все приведенные аргументы ложны, то истинность суждения под вопросом ;)
> Так это просто его личное суждение и его же здоровье :) А так на C действительно о надёжности говорить не приходится, а вот на C++ уже более-менее на уровне писать можно. Только придётся вещей типа арифметики указателей просто не использовать. А также как-то для себя решить проблему с удалением объекта, когда указатели на него ещё есть.

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



Sun 15 Jul 2007 13:43 Mozilla/5.0 (OS/2; U; Warp 4.5; en-US; rv:1.8.1.4) Gecko/200




Programmed by Dmitri Maximovich, Dmitry I. Platonoff, Eugen Kuleshov.
25.09.99 (c) 1999, RU/2. All rights reserved.
Rewritten by Dmitry Ban. All rights ignored.