STM32 новичку в ARM что к чему
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: STM32 новичку в ARM что к чему
А потом идёт сравнение int с символом.
Вообще, лично вам можно любые типы использовать. А вот новичкам лучше дурные советы не давать.
Вообще, лично вам можно любые типы использовать. А вот новичкам лучше дурные советы не давать.
Re: STM32 новичку в ARM что к чему
Не мелочитесь спорами со мной. Спорьте сразу с Керниганом:
Код: Выделить всё
#include <stdio.h>
#define IN 1 /* inside a word */
#define OUT 0 /* outside a word */
/* count lines, words, and characters in input */
main()
{
int c, nl, nw, nc, state;
state = OUT;
nl = nw = nc = 0;
while ((c = getchar()) != EOF) {
++nc;
if (c == '\n')
++nl;
if (c == ' ' || c == '\n' || c = '\t')
state = OUT;
else if (state == OUT) {
state = IN;
++nw;
}
}
printf("%d %d %d\n", nl, nw, nc);
}- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: STM32 новичку в ARM что к чему
Эта по нынешним меркам глупость была написана в прошлом веке. В то время когда Ричи пропустил эту хрень ещё не стоял так остро вопрос разрядности стандартных типов. А потом люди придумали stdint.h, size_t, auto, nullptr и т.д. Если вы хотите оставаться в прошлом веке, то это ваш выбор, но не учите плохому других.
Сейчас компиляторы стали намного умнее и чем точнее вы опишете типы данных, тем оптимальнее код они сделают. И не надо доказывать, что в данном случае это не влияет. Сегодня не повлияет, а завтра с таким подходом может и боком выйти.
Сейчас компиляторы стали намного умнее и чем точнее вы опишете типы данных, тем оптимальнее код они сделают. И не надо доказывать, что в данном случае это не влияет. Сегодня не повлияет, а завтра с таким подходом может и боком выйти.
Re: STM32 новичку в ARM что к чему
[uquote="VladislavS",url="/forum/viewtopic.php?p=3390329#p3390329"]Эта по нынешним меркам глупость была написана в прошлом веке.[/uquote]
Ни секунды не сомневался, что если потребуется, вы и мэтров станете валить не задумываясь. Но все-таки интересно, я что-то пропустил и в этом веке запретили int сравнивать с символом? Не поделитесь, откуда вы эти ваши откровения высасываете?
Окромя того, что указывал вам на вашу ерунду, более никого и никак не учил. Вы о чем?
Вам бы практичнее было за свой подход переживать. Не хотите заняться?
Ни секунды не сомневался, что если потребуется, вы и мэтров станете валить не задумываясь. Но все-таки интересно, я что-то пропустил и в этом веке запретили int сравнивать с символом? Не поделитесь, откуда вы эти ваши откровения высасываете?
Если вы хотите оставаться в прошлом веке, то это ваш выбор, но не учите плохому других.
Окромя того, что указывал вам на вашу ерунду, более никого и никак не учил. Вы о чем?
Сегодня не повлияет, а завтра с таким подходом может и боком выйти.
Вам бы практичнее было за свой подход переживать. Не хотите заняться?
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: STM32 новичку в ARM что к чему
Я дал товарищу полезные рекомендации. Контроль размерности типов должен быть в подсознании у современного программиста, а у эмбеддера особенно. Хотите использовать int, я же не запрещаю, используйте. Не понимаю, чего вы так возбудились, опять хамить начинаете. Пятница что ли?
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: STM32 новичку в ARM что к чему
У вас проц от кварца работает. Либо BRR пересчитайте, либо проц на 72 МГц включите.
Re: STM32 новичку в ARM что к чему
Решено, всем спасибо.
Пересчитал BRR. Буду курить доки 

Re: STM32 новичку в ARM что к чему
[uquote="VladislavS",url="/forum/viewtopic.php?p=3390488#p3390488"]Я дал товарищу полезные рекомендации.[/uquote]
Какие это еще полезные? Насчет того, что символьную константу нельзя с переменной int сравнивать? Так это совет из разряда "стыд и позор", прямо указывающий на незнание вами основ языка.
Лозунги здесь вряд ли смогут помочь. Средствами языка лучше пользоваться осознанно, а не на уровне подсознания или наития. Тогда и Кернигана анафеме не придется предавать.
Какие это еще полезные? Насчет того, что символьную константу нельзя с переменной int сравнивать? Так это совет из разряда "стыд и позор", прямо указывающий на незнание вами основ языка.
Контроль размерности типов должен быть в подсознании у современного программиста,
Лозунги здесь вряд ли смогут помочь. Средствами языка лучше пользоваться осознанно, а не на уровне подсознания или наития. Тогда и Кернигана анафеме не придется предавать.
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: STM32 новичку в ARM что к чему
[uquote="a5021",url="/forum/viewtopic.php?p=3391125#p3391125"]Какие это еще полезные?[/uquote]Почитайте мои посты, я дал точный диагноз сразу.
Раз и два.
[uquote="a5021",url="/forum/viewtopic.php?p=3391125#p3391125"]Насчет того, что символьную константу нельзя с переменной int сравнивать?[/uquote]Это ваши домыслы. Ничего подобного я не говорил, читайте внимательней. Я говорил, что будет приведение типов, а оно в общем случае не бесплатно. В данном случае ничего лишнего не будет, а если 8-битный проц взять?
PS: Кстати, что будет если включить контроль чётности? Боюсь, что тут вам даже Страуструп не поможет.
Раз и два.
[uquote="a5021",url="/forum/viewtopic.php?p=3391125#p3391125"]Насчет того, что символьную константу нельзя с переменной int сравнивать?[/uquote]Это ваши домыслы. Ничего подобного я не говорил, читайте внимательней. Я говорил, что будет приведение типов, а оно в общем случае не бесплатно. В данном случае ничего лишнего не будет, а если 8-битный проц взять?
PS: Кстати, что будет если включить контроль чётности? Боюсь, что тут вам даже Страуструп не поможет.
Re: STM32 новичку в ARM что к чему
[uquote="VladislavS",url="/forum/viewtopic.php?p=3391144#p3391144"]Почитайте мои посты, я дал точный диагноз сразу.[/uquote]
Я в обсуждении конкретно этого нюанса не участвовал, так нафига, спрашивается, стрелки переводить? Отборную чепуху вы понесли, когда вам примерещилось, что типы использовались неправильно. Об этом разговор.
Раз и спрыгнул. Вроде и не было ничего. И Кернигана вроде, как и не поносил. Молодец, фигли.
А вроде ни про какие "общие случаи" речь не шла? Здесь конкретный случай, о нем и говорим. Сравнение полностью корректное, каноническое, а не "Ричи пропустил эту хрень". Ваше счастье, что вы не понимаете, насколько глупо с такими утверждениями смотритесь.
К чему эти полумеры? Четырехбитный берите.
Вы следите за темой обсуждения или речь из вас льется отдельно, произвольным образом?
Я в обсуждении конкретно этого нюанса не участвовал, так нафига, спрашивается, стрелки переводить? Отборную чепуху вы понесли, когда вам примерещилось, что типы использовались неправильно. Об этом разговор.
Это ваши домыслы. Ничего подобного я не говорил, читайте внимательней.
Раз и спрыгнул. Вроде и не было ничего. И Кернигана вроде, как и не поносил. Молодец, фигли.
Я говорил, что будет приведение типов, а оно в общем случае не бесплатно.
А вроде ни про какие "общие случаи" речь не шла? Здесь конкретный случай, о нем и говорим. Сравнение полностью корректное, каноническое, а не "Ричи пропустил эту хрень". Ваше счастье, что вы не понимаете, насколько глупо с такими утверждениями смотритесь.
В данном случае ничего лишнего не будет, а если 8-битный проц взять?
К чему эти полумеры? Четырехбитный берите.
Кстати, что будет если включить контроль чётности? Боюсь, что тут вам даже Страуструп не поможет.
Вы следите за темой обсуждения или речь из вас льется отдельно, произвольным образом?
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: STM32 новичку в ARM что к чему
[uquote="a5021",url="/forum/viewtopic.php?p=3391211#p3391211"]Я в обсуждении конкретно этого нюанса не участвовал[/uquote]
Ну и чего тогда влезаете? Я рекомендации для конкретного случая и дал. И они все в точку. Скорость не та и регистр надо до 8 бит резать, чтобы бит чётности откинуть.
Ну и чего тогда влезаете? Я рекомендации для конкретного случая и дал. И они все в точку. Скорость не та и регистр надо до 8 бит резать, чтобы бит чётности откинуть.
Re: STM32 новичку в ARM что к чему
[uquote="VladislavS",url="/forum/viewtopic.php?p=3391230#p3391230"]Ну и чего тогда влезаете?[/uquote]
Во-первых, я никуда не влезаю. Это публичный форум, а не ваш личный огород.
Еще раз, медленно и печально: мои возражения касались ваших рецептов "подсознательного" применения типов. Ошибочных и несостоятельных.
Во-первых, я никуда не влезаю. Это публичный форум, а не ваш личный огород.
Я рекомендации для конкретного случая и дал. И они все в точку. Скорость не та и регистр надо до 8 бит резать, чтобы бит чётности откинуть.
Еще раз, медленно и печально: мои возражения касались ваших рецептов "подсознательного" применения типов. Ошибочных и несостоятельных.
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: STM32 новичку в ARM что к чему
[uquote="a5021",url="/forum/viewtopic.php?p=3391211#p3391211"]К чему эти полумеры? Четырехбитный берите.[/uquote]Надо будет - возьму.
Re: STM32 новичку в ARM что к чему
int - это сколько бит ? 16 ? 32 ? 64 ? А при портировании кода ? Или передаче кода другому/от другого программиста ? stdint не зря придумали и все открытые проекты, с которыми мне приходилось работать, использовали int16_t, int32_t, int64_t, size_t. В эмбедде stdint является негласным стандартом. Когда приходится работать с чужим кодом, первым делом заменяю нативные типы на stdint. Кстати stdint пришел к нам вместе с стандартом C99, хотя многие до сих пор следуют стандарту C89.
Иван Сусанин - первый полупроводник 
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: STM32 новичку в ARM что к чему
Ну вот, ещё один Кернигана ни во что не ставит. Ричи на тебя нет! 
Re: STM32 новичку в ARM что к чему
Срауструп регулярно стандарты на свой C++ обновляет и не чувствует себя ущемленным 
Если бы в наше время K&R переиздавали бы книгу по Си, я уверен, что в книге была бы рекомендация всегда и везде использовать stdint.
Если бы в наше время K&R переиздавали бы книгу по Си, я уверен, что в книге была бы рекомендация всегда и везде использовать stdint.
Иван Сусанин - первый полупроводник 
Re: STM32 новичку в ARM что к чему
[uquote="Myp3ik",url="/forum/viewtopic.php?p=3391885#p3391885"]А при портировании кода ?[/uquote]
А есть у вас в памяти свежий пример, где ваши слова выглядели бы особо убедительно? Какой-нибудь особо тяжелый случай, где только stdint и спас от верного краха. Из своей практики мне почему-то совсем ничего не вспоминается. По моим ощущениям, та же endianness больше неудобств создает, если мы взялись говорить про портирование между разными платформами.
А я не уверен. Что делать будем?
Понимаете, ваша уверенность -- это просто офигенно, но когда я открываю какой-нибудь stdio.h от только что вышедшей версии иара или кейла, то наблюдаю, что основной тип там по прежнему int. То ли разработчики не совсем разделяют вашей уверенности по поводу намерений K&R, то ли еще что.
А есть у вас в памяти свежий пример, где ваши слова выглядели бы особо убедительно? Какой-нибудь особо тяжелый случай, где только stdint и спас от верного краха. Из своей практики мне почему-то совсем ничего не вспоминается. По моим ощущениям, та же endianness больше неудобств создает, если мы взялись говорить про портирование между разными платформами.
Если бы в наше время K&R переиздавали бы книгу по Си, я уверен, что в книге была бы рекомендация всегда и везде использовать stdint.
А я не уверен. Что делать будем?
Понимаете, ваша уверенность -- это просто офигенно, но когда я открываю какой-нибудь stdio.h от только что вышедшей версии иара или кейла, то наблюдаю, что основной тип там по прежнему int. То ли разработчики не совсем разделяют вашей уверенности по поводу намерений K&R, то ли еще что.
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: STM32 новичку в ARM что к чему
Уууу, как всё запущено. Кто же позволит менять stdio.h, если язык должен иметь совместимость. Для снятия проблемы разрядности стандартных типов придумали stdint.h. Кто-то явно остался в прошлом веке. Посмотрите библиотеки любого производителя, да тот же вышеупомянутый CMSIS.