2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу Пред.  1, 2, 3, 4, 5  След.
 
 Re: Возврат структуры из функции
Сообщение23.07.2023, 14:15 
Заслуженный участник


18/01/15
3224
tolstopuz в сообщении #1602126 писал(а):
Человек по каким-то личным причинам принципиально хочет пользоваться игрушечным компилятором, который до 2017 года не понимал стандарт C89, да еще и не обновляет его версию, хотя в ней хотя бы этот баг исправлен. Печально.
Причина, почему мой выбор пал на это компилятор, заключается в том, что он сам короткий, процедура его скачивания и установки проста (а я, надо сказать, отнюдь не программист, и почти все обсуждения выше для меня как китайская грамота), и он подходит (по словам автора) для маломощных компьютеров.

 Профиль  
                  
 
 Re: Возврат структуры из функции
Сообщение23.07.2023, 16:00 
Заслуженный участник


31/12/05
1517
vpb в сообщении #1602188 писал(а):
и он подходит (по словам автора) для маломощных компьютеров.
Маломощный компьютер - это 8088 с двумя флопповодами по 360 килобайт, на нем будет работать Турбо-Паскаль 7.0, я примерно так в 1992 году работал на "Поиске". Если на вашем компьютере работает Windows 7, он уже совсем не маломощный.

 Профиль  
                  
 
 Re: Возврат структуры из функции
Сообщение23.07.2023, 22:47 
Заслуженный участник


18/01/15
3224
tolstopuz в сообщении #1602197 писал(а):
Если на вашем компьютере работает Windows 7, он уже совсем не маломощный.
Понятно. Будем знать.

 Профиль  
                  
 
 Re: Возврат структуры из функции
Сообщение23.07.2023, 23:38 
Заслуженный участник
Аватара пользователя


16/07/14
9143
Цюрих
vpb в сообщении #1602179 писал(а):
В книжках и статьях тоже бывают ошибки, тем не менее люди же их читают, и извлекают для себя пользу
Тут есть очень большая разница: Вы можете самостоятельно сделать своё рассуждение по мотивам статьи, и убедиться в его правильности. А вот реалистично написать свой бинарный код по мотивам скомпилированного - нет. И даже понять, что в скомпилированном коде ошибка очень сложно.
Поэтому компилятор должен быть максимально надежным. Плюс если уж Вы умеете работать с командной строкой (это не так мало, многие студенты первого курса не умеют и довольно тяжело учатся), то и с использованием gcc или clang у Вас проблем не будет.

 Профиль  
                  
 
 Re: Возврат структуры из функции
Сообщение24.07.2023, 17:15 
Аватара пользователя


28/10/21
100
mihaild в сообщении #1602238 писал(а):
Поэтому компилятор должен быть максимально надежным. Плюс если уж Вы умеете работать с командной строкой (это не так мало, многие студенты первого курса не умеют и довольно тяжело учатся), то и с использованием gcc или clang у Вас проблем не будет.


Чем больше вы верите в надежность компилятора, тем труднее вам будет разобраться в ситуации, когда аналогичные глюки полезут из gcc или clang.

 Профиль  
                  
 
 Re: Возврат структуры из функции
Сообщение24.07.2023, 17:19 
Заслуженный участник
Аватара пользователя


16/07/14
9143
Цюрих
TheRuinedMap в сообщении #1602293 писал(а):
Чем больше вы верите в надежность компилятора, тем труднее вам будет разобраться в ситуации, когда аналогичные глюки полезут из gcc или clang
Не особо. И в моей практике баг в clang вылез ровно один раз (и выглядел он не как неправильная работа программы, а как OOM при компиляции).

 Профиль  
                  
 
 Re: Возврат структуры из функции
Сообщение24.07.2023, 20:13 
Аватара пользователя


28/10/21
100
mihaild в сообщении #1602297 писал(а):
TheRuinedMap в сообщении #1602293 писал(а):
Чем больше вы верите в надежность компилятора, тем труднее вам будет разобраться в ситуации, когда аналогичные глюки полезут из gcc или clang
Не особо. И в моей практике баг в clang вылез ровно один раз (и выглядел он не как неправильная работа программы, а как OOM при компиляции).


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

Всякий раз, когда я привожу этот пример для GCC

Используется синтаксис C++
#include <cstdint>
#include <cstdio>

std::uint16_t foo(std::uint16_t abgr)
{
  return (abgr ^= (abgr >> 8)) ^= (abgr << 8);
}
 
int main()
{
  std::uint16_t tmp = 0xAABB;
  std::printf("%x %x\n", tmp, foo(tmp));
}


требуется время, чтобы убедить собравшихся, что правильный вывод в современном С++ - aabb 1111, а не aabb bb11, которое до сих пор упорно выдает GCC.

 Профиль  
                  
 
 Re: Возврат структуры из функции
Сообщение24.07.2023, 20:50 
Заслуженный участник
Аватара пользователя


01/09/13
4656
TheRuinedMap в сообщении #1602314 писал(а):
правильный вывод в современном С++

а можно пруф?

 Профиль  
                  
 
 Re: Возврат структуры из функции
Сообщение24.07.2023, 21:24 
Аватара пользователя


28/10/21
100
Geen в сообщении #1602319 писал(а):
TheRuinedMap в сообщении #1602314 писал(а):
правильный вывод в современном С++

а можно пруф?


Какого рода "пруф"? Начиная с С++17 были введены более жесткие правила упорядочения (sequencing) в операторе присваивания: http://eel.is/c++draft/expr.ass#1. А именно, было добавлено однозначное: "The right operand is sequenced before the left operand." Если выражение в функции вычислять в соответствии с правилами С++17 (и позже), то получится 0x1111.

 Профиль  
                  
 
 Re: Возврат структуры из функции
Сообщение24.07.2023, 21:47 
Экс-модератор
Аватара пользователя


23/12/05
12063

(Оффтоп)

TheRuinedMap в сообщении #1602314 писал(а):
Всякий раз, когда я привожу этот пример для GCC

Для тех, кто использует в своем коде такие конструкции, есть отдельный котел

 Профиль  
                  
 
 Re: Возврат структуры из функции
Сообщение24.07.2023, 21:57 
Заслуженный участник
Аватара пользователя


01/09/13
4656
TheRuinedMap в сообщении #1602322 писал(а):
Начиная с С++17 были введены

А можно ссылку не на драфт?

 Профиль  
                  
 
 Re: Возврат структуры из функции
Сообщение24.07.2023, 22:00 
Аватара пользователя


28/10/21
100

(Оффтоп)

photon в сообщении #1602325 писал(а):
TheRuinedMap в сообщении #1602314 писал(а):
Всякий раз, когда я привожу этот пример для GCC

Для тех, кто использует в своем коде такие конструкции, есть отдельный котел
Но речь-то идет не о таких конструкциях, а о том, что где-то в недрах GCC упорядочение вычисления оператора присваивания реализовано неправильно. А уже в каких конструкциях это вылезет - дело пятое. Я вот пока нашел такую... А завтра какой-нибудь Гойко Митич наткнется (или может уже наткнулся) на более практичный вариант, страдающий от того же бага...


-- 24.07.2023, 11:03 --

Geen в сообщении #1602326 писал(а):
TheRuinedMap в сообщении #1602322 писал(а):
Начиная с С++17 были введены

А можно ссылку не на драфт?


Во-первых, это и есть "не драфт" в отношении С++17.

Во-вторых, "ссылка не на драфт" может выглядеть только так: [expr.ass]/1. И эта ссылка уже содержится в приведенной мною ссылке.

 Профиль  
                  
 
 Re: Возврат структуры из функции
Сообщение24.07.2023, 22:21 
Заслуженный участник
Аватара пользователя


01/09/13
4656
TheRuinedMap в сообщении #1602327 писал(а):
Во-первых, это и есть "не драфт" в отношении С++17.

это из чего следует?
TheRuinedMap в сообщении #1602327 писал(а):
Во-вторых, "ссылка не на драфт" может выглядеть только так: [expr.ass]/1. И эта ссылка уже содержится в приведенной мною ссылке.

ссылка содержится в ссылке.....
знавал я перл-гольф, вот совсем недавно ещё и с++-гольф познал... но вот в 'русский язык'-гольф я не играю - слабы мои знания в этой части.

-- 24.07.2023, 22:30 --

photon в сообщении #1602325 писал(а):
использует в своем коде такие конструкции

Вообще не понимаю практической необходимости в l-value присваивания.

 Профиль  
                  
 
 Re: Возврат структуры из функции
Сообщение24.07.2023, 22:33 
Заслуженный участник
Аватара пользователя


16/07/14
9143
Цюрих
TheRuinedMap в сообщении #1602314 писал(а):
В таком виде это вполне может быть лишь иллюстрацией того, о чем я говорю. То есть вполне может быть, что "неправильная работа программы" в вашей практике вылезала намного чаще. Но вы просто не замечали этого, ибо свято верили в непогрешимость компилятора.
Я не понимаю, как вера в компилятор влияет на отладку. Рано или поздно я либо нахожу у себя ошибку, либо получаю настолько простой код, что могу проверить его по стандарту. Пока что всегда (кроме упомянутого выше случая) реализовывался первый вариант.
Geen в сообщении #1602326 писал(а):
А можно ссылку не на драфт?
А за не-драфт хотят денег. Но там всё то же самое.

 Профиль  
                  
 
 Re: Возврат структуры из функции
Сообщение24.07.2023, 22:34 
Заслуженный участник
Аватара пользователя


01/09/13
4656
mihaild в сообщении #1602331 писал(а):
А за не-драфт хотят денег.

Знаю, на халяву надеялся :mrgreen:

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

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



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

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


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

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group