kan35 7 15 июля, 2023 Опубликовано 15 июля, 2023 · Жалоба Действительно, проверил в GCC и IAR - все аналогично. Тогда вопрос снимается! Конечно у меня остается некоторое непонимание, как раньше оно у меня работало в двух разных проектах, которым уж более 10 лет. Забавно. Всем большое спасибо за участие и главное - за терпение! так, глядишь, чему нибудь и научусь Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
krux 8 15 июля, 2023 Опубликовано 15 июля, 2023 · Жалоба ничему ты не научишься. бесполезное занятие. 2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
EdgeAligned 84 16 июля, 2023 Опубликовано 16 июля, 2023 · Жалоба Ну почему же. Не обязательно ж становиться "лучшим по профессии", но че-нить по-мелочи в рамках хобби ковырять - почему бы и нет. Тем более, что слишком больших премудростей тут нету. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 60 16 июля, 2023 Опубликовано 16 июля, 2023 · Жалоба On 7/16/2023 at 1:12 AM, krux said: ничему ты не научишься жестко 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_4afc_ 25 17 июля, 2023 Опубликовано 17 июля, 2023 · Жалоба On 7/15/2023 at 2:04 PM, kan35 said: У меня такое предположение, что, наверное, в более новых компиляторах (может и в стандартах это и описано), они учли, что если уж приводишь сразу к unsigned, то не надо втаскивать двоичное дополнение в виде FF, если бы мне это было нужно, я бы делал signed. Ну а с точки зрения суровых ранних компиляторов нужно все делать корректно, приводя тип "постепенно". Тогда для исключения подобных финтов от новых компиляторов надо, как минимум, свои старые проекты прогнать через современный Линтер для Си и посмотреть на что он ругается. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 178 17 июля, 2023 Опубликовано 17 июля, 2023 · Жалоба 1 час назад, _4afc_ сказал: Тогда для исключения подобных финтов от новых компиляторов надо, как минимум... Да нет никаких финтов у новых компиляторов. И старые, и новые работают одинаково правильно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_4afc_ 25 17 июля, 2023 Опубликовано 17 июля, 2023 · Жалоба 1 hour ago, Arlleex said: Да нет никаких финтов у новых компиляторов. И старые, и новые работают одинаково правильно. Несогласен. Перенос на Watcom с GCC требовал рефакторинга кода, особенно устранения отсутствия скобок между логическими и арифметическими операциями. Правильно - это когда согласно правилам, а правила как раз в линтерах и можно проверить... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 234 17 июля, 2023 Опубликовано 17 июля, 2023 · Жалоба 13 минут назад, _4afc_ сказал: Перенос на Watcom с GCC требовал рефакторинга кода, особенно устранения отсутствия скобок между логическими и арифметическими операциями. Если он этого требовал, значит он не был компилятором си(си++). 13 минут назад, _4afc_ сказал: Правильно - это когда согласно правилам, а правила как раз в линтерах и можно проверить... Если какой-то компилятор не соблюдает правила языка, значит это негодный компилятор. В мусорку его. 2 часа назад, _4afc_ сказал: Тогда для исключения подобных финтов от новых компиляторов В чём именно "финт компилятора"? В том, что он соблюдает правила языка, которых не знает кодонаписатель? 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_4afc_ 25 17 июля, 2023 Опубликовано 17 июля, 2023 · Жалоба 1 hour ago, jcxz said: Если он этого требовал, значит он не был компилятором си(си++). Если какой-то компилятор не соблюдает правила языка, значит это негодный компилятор. В мусорку его. В чём именно "финт компилятора"? В том, что он соблюдает правила языка, которых не знает кодонаписатель? Это демагогия, типа: "преимущество Си - в кроссплатформенности и переносимости". На самом деле новый компилятор, или железо потребует рефакторинга кода. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 234 17 июля, 2023 Опубликовано 17 июля, 2023 · Жалоба 45 минут назад, _4afc_ сказал: На самом деле новый компилятор, или железо потребует рефакторинга кода. бррр... Вы вообще поняли о чём тут шла речь?? Речь шла о том, что изначально ТС не знал правил приведения типов в си. Отсюда и проблемы у него. Какой "рефакторинг"? Если код кривой, то вне зависимости от компилятора он требует исправления. Компилятор тут не при чём, новый он или старый. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_4afc_ 25 17 июля, 2023 Опубликовано 17 июля, 2023 · Жалоба 41 minutes ago, jcxz said: Речь шла о том, что изначально ТС не знал правил приведения типов в си. Отсюда и проблемы у него. Как об этом узнать? Нет варнингов - код правильный. 41 minutes ago, jcxz said: Какой "рефакторинг"? Если код кривой, то вне зависимости от компилятора он требует исправления. Компилятор тут не при чём, новый он или старый. Как ищем кривой код в милионах строк чужого кода? Глазами - рефакторинг, программами - линтер. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 178 17 июля, 2023 Опубликовано 17 июля, 2023 · Жалоба 1 час назад, _4afc_ сказал: Как об этом узнать? Нет варнингов - код правильный. Сильное заявление. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sasamy 2 17 июля, 2023 Опубликовано 17 июля, 2023 · Жалоба On 7/17/2023 at 5:31 PM, _4afc_ said: Как об этом узнать? Нет варнингов - код правильный. Quote $ gcc -pedantic 1.c 1.c: In function ‘main’: 1.c:3:19: warning: overflow in conversion from ‘int’ to ‘signed char’ changes value from ‘136’ to ‘-120’ [-Woverflow] 3 | signed char x = 0x88; | ^~~~ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_4afc_ 25 17 июля, 2023 Опубликовано 17 июля, 2023 · Жалоба 1 hour ago, sasamy said: warning: overflow in conversion from ‘int’ to ‘signed char’ changes value from ‘136’ to ‘-120’ [-Woverflow] О! если есть хоть один варнинг - код неправильный с точки зрения копмилятора. т.е. если такое и в предыдущих версиях gcc - то виноват тот кто собрал на них в изделие код с варнингом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 234 17 июля, 2023 Опубликовано 17 июля, 2023 · Жалоба 5 часов назад, _4afc_ сказал: Как об этом узнать? Нет варнингов - код правильный. char c; ... *(int *)&c = 0x12345678; реально правильный?? Ведь варнингов нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться