OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Вторник, 12 Ноябрь, 2019 18:24

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 36 ]  На страницу Пред.  1, 2
Автор Сообщение
СообщениеДобавлено: Вторник, 21 Июль, 2009 08:30 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8196
Откуда: Троицк, Москва
Vlad писал(а):
Для кривого исходного кода компилятор может генерить кривой код. Это явно оговорено в спецификации языка.
Нельзя ли процитировать определение кривости кода из спецификации языка.

И как это так: язык провозглашает свободу, а сам...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 21 Июль, 2009 09:33 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
GUEST писал(а):
Vlad писал(а):
Тоже самое - сначала разименование, а потом вычисление нулевости.
Оператор -> - это не "разименование", а доступ через указатель.


Поиграем в терминологию? :) Оператор -> подразумевает разыменование. Без него ну никак :)

GUEST писал(а):
Для компилятора может быть не важно значение которое имеет этот указатель и действий над его значением не будет. Поэтому и другой.


Ох... Приведите свой компилируемый пример.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 21 Июль, 2009 10:02 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Info21 писал(а):
Vlad писал(а):
Для кривого исходного кода компилятор может генерить кривой код. Это явно оговорено в спецификации языка.
Нельзя ли процитировать определение кривости кода из спецификации языка.


Цитата:
1.3.12 undefined behavior [defns.undefined]
behavior, such as might arise upon use of an erroneous program construct or erroneous data, for which this
International Standard imposes no requirements. Undefined behavior may also be expected when this
International Standard omits the description of any explicit definition of behavior. [Note: permissible undefined
behavior ranges from ignoring the situation completely with unpredictable results, to behaving during
translation or program execution in a documented manner characteristic of the environment (with or without
the issuance of a diagnostic message), to terminating a translation or execution (with the issuance of a
diagnostic message). Many erroneous program constructs do not engender undefined behavior; they are required to be diagnosed. ]


Info21 писал(а):
И как это так: язык провозглашает свободу, а сам...


Какую свободу? :) В плане спецификации языка у C++ гайки закручены покруче любого из оберонов :) Так сильно закручены, что язык теперь не развивается вообще.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 21 Июль, 2009 10:43 

Зарегистрирован: Вторник, 29 Ноябрь, 2005 21:41
Сообщения: 1026
Vlad писал(а):
GUEST писал(а):
Vlad писал(а):
Тоже самое - сначала разименование, а потом вычисление нулевости.
Оператор -> - это не "разименование", а доступ через указатель.


Поиграем в терминологию? :) Оператор -> подразумевает разыменование. Без него ну никак :)

Мне бы ваши заботы. Для действия разыменования есть вполне конкретный оператор *. Оператор -> же подразумевает лишь работу с именем.
Vlad писал(а):
GUEST писал(а):
Для компилятора может быть не важно значение которое имеет этот указатель и действий над его значением не будет. Поэтому и другой.


Ох... Приведите свой компилируемый пример.
Достаточно уже поговорил. То, что не понимаете, не верю. Возьмите любой свой с доступом к статическим членам какого-либо класса.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 21 Июль, 2009 10:59 

Зарегистрирован: Вторник, 29 Ноябрь, 2005 21:41
Сообщения: 1026
Vlad писал(а):
Некорректные программы компилятор не волнуют. Причем корректность/некорректноть определяется стандартом языка, а не особенностями линуксовог ядра, в котором чтение по нулевому адресу может быть сколько угодно "корректным".
Никто и не требует чтобы волновали, но знать, что они некорректные ему тоже никто не запрещает.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 21 Июль, 2009 11:01 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
GUEST писал(а):
Vlad писал(а):
Поиграем в терминологию? :) Оператор -> подразумевает разыменование. Без него ну никак :)

Мне бы ваши заботы. Для действия разыменования есть вполне конкретный оператор *. Оператор -> же подразумевает лишь работу с именем.


Я бы не стал спорить, но тут как раз стандарт под рукой оказался, так что извините, но вы действительно заблуждаетесь :)
Цитата:
5.2.5.3
If E1 has the type “pointer to class X,” then the expression E1->E2 is converted to the equivalent form
(*(E1)).E2; the remainder of 5.2.5 will address only the first option (dot)).
...


GUEST писал(а):
Достаточно уже поговорил. То, что не понимаете, не верю. Возьмите любой свой с доступом к статическим членам какого-либо класса.


Гхм. Уже и статические члены откуда-то взялись... Нет уж, давайте ваш пример, или спорить не о чем.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 21 Июль, 2009 11:10 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
GUEST писал(а):
Vlad писал(а):
Некорректные программы компилятор не волнуют. Причем корректность/некорректноть определяется стандартом языка, а не особенностями линуксовог ядра, в котором чтение по нулевому адресу может быть сколько угодно "корректным".
Никто и не требует чтобы волновали, но знать, что они некорректные ему тоже никто не запрещает.


Так откуда ж ему знать, что вы там по нулевому поинтеру фигачите? :) Ну фигачите, значит считаете себя умней его. Тогда и не обижайтесь, что он вас не понимает :) Потому что он глупый и не знает, что такое вообще может быть - чтение по нулевому указателю, не запрограммировали его знать о такой ситуации, потому что такой ситуации нет в языке C++ :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 21 Июль, 2009 19:06 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8196
Откуда: Троицк, Москва
Короче, фтопку. Как будто без этого компоста забот нет...
Вот блесну -- узкую вертушку с малым углом отклонения найти не могу, а тут...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 22 Июль, 2009 10:34 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3108
Откуда: Астрахань
GUEST писал(а):
Vlad писал(а):
Тоже самое - сначала разименование, а потом вычисление нулевости.
Оператор -> - это не "разименование", а доступ через указатель.

Вообще-то это именно разыменование через указатель.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 23 Июль, 2009 11:44 

Зарегистрирован: Вторник, 29 Ноябрь, 2005 21:41
Сообщения: 1026
Vlad писал(а):
Так откуда ж ему знать, что вы там по нулевому поинтеру фигачите? ..., не запрограммировали его знать о такой ситуации, потому что такой ситуации нет в языке C++ :)
Мне ему что-ли подсказывать? Да это и не предусмотрено.
Валерий Лаптев писал(а):
Вообще-то это именно разыменование через указатель.
Отнюдь.
GUEST писал(а):
Оператор -> же подразумевает лишь работу с именем.
То, что в некоторых случаях (каких спросите у Влада) работа с ним сводится к разыменованию дела не отменяет. Конец.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 24 Июль, 2009 10:03 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3108
Откуда: Астрахань
GUEST писал(а):
Валерий Лаптев писал(а):
Вообще-то это именно разыменование через указатель.
Отнюдь.

Тогда найдите библию Страуструпа и посмотрите там.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 24 Июль, 2009 12:59 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Как уже тут упоминалось выше, в описании С++ от Страуструпа сказано, что obj->f является сахаром для (*obj).f, не более того...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 25 Июль, 2009 21:04 

Зарегистрирован: Вторник, 29 Ноябрь, 2005 21:41
Сообщения: 1026
Валерий Лаптев писал(а):
Тогда найдите библию Страуструпа и посмотрите там.

Geniepro писал(а):
Как уже тут упоминалось выше, в описании С++ от Страуструпа сказано, что obj->f является сахаром для (*obj).f, не более того...
Как уже здесь говорил, для квалификации работы -> с именем как разыменования нет достаточных оснований. Если у Страуструпа такие основания есть готов выслушать и его тоже.


Последний раз редактировалось Сергей Оборотов Суббота, 25 Июль, 2009 23:34, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 25 Июль, 2009 21:23 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
GUEST писал(а):
Как уже здесь говорил, для классификации работы -> с именем как разыменования нет достаточных оснований. Если у Страуструпа такие основания есть готов выслушать и его тоже.


Внесите свое предложение на рассмотрение комитета :) Хотя в новый стандарт вы уже опоздали, но вдруг будет следующий? Хотя я бы голосовал против таких вольностей, как работа с именем через "стрелочку" для нулевых указателей. Даже если это статические мемберы (вы на это все пытаетесь намекнуть или чего?). Потому что, когда я вижу "p->member" намного проще читать код с предположением, что в этом месте указатель не может быть нулевым по определению, чем с оглядкой на всякие частности. А для работы с именами внутри класса есть вполне конкретная конструкция: X::member.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 25 Июль, 2009 23:33 

Зарегистрирован: Вторник, 29 Ноябрь, 2005 21:41
Сообщения: 1026
Vlad писал(а):
Внесите свое предложение на рассмотрение комитета :)
Это Вы о чем? Какое предложение в стандарт мне внести?
Vlad писал(а):
Хотя в новый стандарт вы уже опоздали, но вдруг будет следующий? Хотя я бы голосовал против таких вольностей, как работа с именем через "стрелочку" для нулевых указателей. Потому что.
Не представляю своего в нем участия. Теперь уже действительно конец :).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 26 Июль, 2009 01:45 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
GUEST писал(а):
Это Вы о чем? Какое предложение в стандарт мне внести?


О том, что "стрелочка" это не то же самое, что "звездочка". И далее объяснить в чем различие. Лично я так и не понял чего вы хотите.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 36 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


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

Найти:
cron
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2019, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB