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.