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


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


> Ну да: char - числовой тип, логический тип - тоже числовой, да и указатель - тоже число. Специально только что проверил - вот эта программка компилируется без ошибок и предупреждений:
> -------------
> main()
> {
> int i;
> int *p;
> i = func(*p);
> }
>
> int func(int x)
> {
> return x+1;
> }
> -------------

сообщает об отсутствии прототипа функции.

>
> и вот эта программка компилируется тоже без ошибок и предупреждений:
> -------------
> main()
> {
> int i;
> int *p;
> i = func(p);
> }
>
> int func(int x)
> {
> return x+1;
> }
> -------------

Не компилируется. Ошибка типизации. Указатель вместо int.

> Разница между ними - в одной-единственной звёздочке. О чём я и говорил несколько писем назад, когда друзей вспоминал.

Объясни друзьям, что функции нужно описывать. Это несложно.

> - ни те ошибок при компиляции, ни хотя бы предупреждений. Потому как в полном соответствии с правилами языка. Хотя ни одного кастинга по-прежнему нет.

Зависит от компилятора. CodeWarrior сообщает о возможной потере точности. OW 1.7 вроде как тоже правили на эту тему - надо будет посмотреть.

> "А мне пофиг, с какой стороны у тебя козырёк!" Если при пользовании средством можно столкнуться с проблемами, то я предпочту другое средство - с которым проблем нет. Мы ведь о надёжности говорим, а не о том, что можно "в принципе".

"Главная часть любого оружия - голова его владельца".

> А ты пробовал? На той же Модуле я спокойно решу практически любую задачу, решаемую на Си. Но хотел бы я посмотреть, как ты будешь на Си манипулировать битовыми флажками, если их больше, чем помещается в long int (ну, хотя бы 256 битов). А между тем, подобные манипуляции в системном программировании встречаются сплошь и рядом. (Когда я смотрю на сишное манипулирование масками - повеситься хочется.)

Используй сишные битфилды. Очень удобно и код хороший получается.

>
> > К примеру, как на фортране написать обработчик прерываний?
>
> Не понял - а в чём проблема? Чем оно сложнее, чем аналогичный обработчик на Паскале или любом другом компилируемом языке.

В стандарте Паскаля не аналога для сишного interrupt.

> > Как к фортрановской проге прикрутить паскалевскую библиотеку?
>
> А к сишной как?

Описываешь calling convention для внешней функции и все.

> > Как на паскале описать функцию с переменным числом параметров?
>
> Этого ещё не хватало! Зачем уродовать неплохой, в принципе, язык? Функции с переменным числом параметров - один из важнейших элементов _ненадёжности_.

Не иначе именно поэтому в том же самом стандарте Паскаля такие функции есть. Такой вот ненадежный стандарт.

> Библиотеки от этого насмерть перепугаются и исправятся?

Генофонд улучшится.

> Но это всего лишь практика. Языком оно не навязывается.

Если ты любишь, когда тебе чего-то навязывают - то оно конечно.

> Догадываешься, сколько существует всяких сишных библиотек, в которых имена функций не имеют никаких префиксов? Начиная прямо со стандартных библиотек самого языка.

Стандартные библиотеки в префиксах не нуждаются, именно потому что они стандартные.

> Чему равно у после "y = ++x - ++x;" (скобки расставить по вкусу)?
> Это пример из моих студенческих лет. Сейчас бы я спросил: что вернет mult(++x, --x), если функция mult() возвращает произведение своих аргументов? И чему будет равна переменная x после этого?

Ну и кто тебе доктор, если ты такой код пишешь?
Ты в сорцы lxlite посмотри. Прямо-таки образцовый пример абсолютно ублюдочного кода на паскале.



Mon 16 Jul 2007 10:41 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.