Вопросы по С/С++ (СИ)

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Аватара пользователя
aam
Собутыльник Кота
Сообщения: 2994
Зарегистрирован: Сб фев 20, 2010 14:00:12
Откуда: Москва

Re: Вопросы по С/С++ (СИ)

Сообщение aam »

BCluster писал(а):aam, вы в курсе как работают static-переменные внутри функций?

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

Но вообще, из 32 ног проца юзать 10 - это как?) Мне кажется, что жирно.
Аватара пользователя
Psych
Опытный кот
Сообщения: 848
Зарегистрирован: Ср мар 02, 2011 07:47:39
Откуда: Уфа

Re: Вопросы по С/С++ (СИ)

Сообщение Psych »

aam писал(а):Но вообще, из 32 ног проца юзать 10 - это как?) Мне кажется, что жирно.

Ну прикрутите к хилому МК внешнюю память..раз уж так :roll:
Аватара пользователя
BCluster
Собутыльник Кота
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение BCluster »

aam писал(а):Но вообще, из 32 ног проца юзать 10 - это как?) Мне кажется, что жирно.

Ничего страшного в этом не вижу.
Даже допустим, вы всеми оптимизициями и костылями добились что оно влезло в МК. А потом что? Какое-то мелкое изменение и все, уже 100% не влезете. Поэтому рекомендуется оставлять запас по ресурсам ок. 30% в лучшем случае.
Аватара пользователя
aam
Собутыльник Кота
Сообщения: 2994
Зарегистрирован: Сб фев 20, 2010 14:00:12
Откуда: Москва

Re: Вопросы по С/С++ (СИ)

Сообщение aam »

Ну а как с флагами из библиотек? Не писать же для каждого функцию get/set. А через функции постоянно тыркаться с ними - так флаги часто проверяются.
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение YS »

aam, вас кидает в крайности. :)

Нет какого-то самого_лучшего_метода. Все определяется опытом и чувством меры.

Нужна глобальная переменная? Чувствуете, что без нее будет запутанно / слишком неэффективно? Введите ее.

Хотите завести глобальную переменную, но чувствуете, что логичнее будет завернуть ее в метод? Сделайте переменную локальной, а доступ к ней через метод.

Очень хочется / нужно ООП? Пишите классы.

Нужна ассемблерная вставка? Сделайте ее.

Реальный код это всегда баланс между человекочитаемостью, скоростью выполнения и размером.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение WiseLord »

Избегать глобальных переменных - это общая рекомендация. Микроконтроллеры - немного другой случай, и эту рекомендацию не стоит воспринимать как непреложное правило. Если получается без глобальных переменных - хорошо, если же без них сильно разрастается код и не хватает flash для кучи мелких функций set/get - можно и глобальную переменную завести.

Вопрос вообще начинался с того, как глобальные #define определять. Я уже выше писал - их передать можно препроцессору в командной строке, это, например, характерно для F_CPU (-DF_CPU). Ну или в "свойствах проекта" или как там это называется в разных IDE.
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Вопросы по С/С++ (СИ)

Сообщение ploop »

Но вообще, из 32 ног проца юзать 10 - это как?) Мне кажется, что жирно

Возьмите тини85. 8 ног, а начинка как у меги.
Аватара пользователя
aam
Собутыльник Кота
Сообщения: 2994
Зарегистрирован: Сб фев 20, 2010 14:00:12
Откуда: Москва

Re: Вопросы по С/С++ (СИ)

Сообщение aam »

ploop писал(а):Возьмите тини85. 8 ног, а начинка как у меги.

Хотел взять Тини84. Но у них цена как у Мега32 :))) И есть не в любом магазине. Вопрос - нфига? :) Меня это удивило, и решил посмотреть цену у производителя. Но так и не нашел.
ATmega8A в TQFP-32 я купил по 40 руб./шт в розницу. Пока не включал, но на вид настоящиие. Да и в ленте упакованы. ATTINY2313A-SU там же стоит 30 руб., 4313 - по 56 руб, т. е. дороже Меги8. А вот ATtiny84-20SSU начинается от 116 руб! :shock: :shock: :shock: Вопрос - это потому что их никто не привык брать или это по жизни так? Если по жизни так, то нахрена они вообще нужны?

Кстати, ATtiny85-20SU дороже меги8 - 54 руб. Но она и по ногам не совсем проходит.
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение YS »

С ценами на AVR уже давно дела так себе.

aam, не переживайте так по поводу неиспользованных ног. :)) В конце концов, в любом реальном применении часть возможностей МК останется незадействованной (и часть ног в том числе) - это плата за универсальность/унифицированность самих МК.

Виртуозное впихивание прошивки/функционала в кристалл по большей части полезно для саморазвития. В реальных применениях, как уже сказали, полезно оставлять хотя бы 30% на будущее.

Например, неиспользуемые ноги я, если позволяет место на плате, развожу на разъем. Вдруг пригодится? Ну а свободная память точно пригодится при доводке функционала.

Так что везде имеет место компромисс. На одном полюсе располагаются такие виртуозы, как Linus Akesson, на другом - дилетанты с Ардуино, на третьем - ревнители стандартов, инкапсуляции и прочих умных слов. Реальное решение всегда лежит где-то между этими полюсами. Тяготение к конкретному методу определяется задачей.

Собственно, искусство инженера и состоит в том, чтобы сделать правильный выбор среди инструментов, методов и решений.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Аватара пользователя
aam
Собутыльник Кота
Сообщения: 2994
Зарегистрирован: Сб фев 20, 2010 14:00:12
Откуда: Москва

Re: Вопросы по С/С++ (СИ)

Сообщение aam »

YS писал(а):не переживайте так по поводу неиспользованных ног

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

Почему спросил про ноги - просто подсознательно было сомнение, что так правильно. В итоге пока остановился на Меге8, а тини84 хоть и валяется где-то, но если потом статью писать - народ в Хацапетовке не поймет :))

Ардуино не признаю впринципе и считаю, что это занятие для программистов-теоретиков, но никак не для инженера-электронщика. Ну по крайней мере в тех задачах, которые решал и решаю.
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение YS »

Эх, когда-то я был молодой и горячий, признавал только ассемблер и AVR... С тех пор прошло много времени. :tea:

Теперь пришел, во-первых, здоровый пофигизм (заказчик хочет на Arduino? Мне не жалко...), а, во-вторых, понимание, что в мире нет единственно правильного пути. :))

Касаемо Arduino - человеку, всерьез увлекающемуся электроникой с прицелом на профессонализм там и правда делать нечего. Ну, разве только продавать свои решения на сложившемся рынке. :)))

Ардуино как идеология это кормушка для производителей - лояльная аудитория покупателей, которая никуда не убежит, потому что нормально разрабатывать свои устройства не умеет и при культивируемом там подходе никогда не научится, а будет вечно покупать то, что предлагают, по заявленной цене. :)
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Аватара пользователя
shads
Опытный кот
Сообщения: 882
Зарегистрирован: Ср фев 22, 2012 01:25:21

Re: Вопросы по С/С++ (СИ)

Сообщение shads »

aam писал(а):Но либо я чего-то не понял, либо кодить не умею, но простейшая девайсина с пультом от телека и БЕЗ знаковых/сегментных индикаторов у меня в Тиню2313 не лезет.
Навреное и первое и второе :)..... потому как должно было легко влезть.....
Библиотеки какие нибудь сторонние используете?

aam писал(а):И вот если в пределах одного файла, скажем, основной программы, как без глобальных переменных я обойдусь? Ведь разные функции используют общие для всей программы переменные. Т. е. все равно от глобальных переменных никуда не деться.
Естественно...
В той программе которую я привел в пример выше, в главном файле были 4 глобальные переменные. (НО они напрямую использовались только функциями главного файла, и не в коем случае не упоминались в других модулях, которые по сути не должны ничего знать о том что происходит вне пространства самого модуля.....)

aam писал(а):Хотел взять Тини84. Но у них цена как у Мега32 :))) И есть не в любом магазине. Вопрос - нфига? :)
Воооо.... прозрел наконец...

aam писал(а):никогда не понимаю мазохистов, паяющих Спектрумы на современной базе.
Вообще то это тоже для повышения квалификации.....
Вот например такой случай
Аватара пользователя
aam
Собутыльник Кота
Сообщения: 2994
Зарегистрирован: Сб фев 20, 2010 14:00:12
Откуда: Москва

Re: Вопросы по С/С++ (СИ)

Сообщение aam »

shads писал(а):Библиотеки какие нибудь сторонние используете?

Библиотеки сам писал, причем "по всем правилам", т. е. контроль всех длительностей импульсов от пульта, ошибок и т. п., возможность обработки длительного удержания и отпускания кнопки. Пульт RC-5. Вес библиотеки - около 455 байт получился. Еще библиотека, которая пикает пикалкой с генератором (грубо говоря на ногу 0/1 выдает). 130 байт вышло. Может выдавать 1 писк или несколько с заданой длительностью и паузой. Ну и полезная часть - обработчики кнопок и т. п.

shads писал(а):Вообще то это тоже для повышения квалификации.....
Вот например такой случай
Это понятно, квалификация несомненно повысится, но мне как-то не греет душу паять чего-то "в ящик", когда полно пожеланий с практически полезной тематикой. Так что на спектрум я бы никогда в жизни не стал время убивать - все равно что в "стрелялки" рубаться по нескольку часов. Тем более что времени нет совсем - вот эту девайсину год уже мучаю, хотя там делать нечего.
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение YS »

aam, скажу честно, я тоже не совсем понимаю людей со спектрумами. Но если им нравится, отчего нет? :))
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Вопросы по С/С++ (СИ)

Сообщение dosikus »

YS писал(а): скажу честно, я тоже не совсем понимаю людей со спектрумами.

Для того что бы понять надо было в свое время иметь Спектрум . Или собрать его самому .
А aam скажу, перед тем как срать на других , оглядись вокруг - многие считают DIY фанатов так же не от мира сего.
Кто то так же и тебе может заявить - зачем делать DIY фентифлюшки , если их в большинстве своем проще купить?
К тому же хобби не всегда и рационально и материально окупаемо , кроме бабла еще и душа есть ! :)))
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение YS »

Для того что бы понять надо было в свое время иметь Спектрум .


Я догадываюсь. :) Просто в "то время" (восьмидесятые) меня еще на свете не было, потому иметь Спектрум я никак не мог. Так что и ностальгии по нему у меня нету. Но, в общем, это интересный исторический комп.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Re: Вопросы по С/С++ (СИ)

Сообщение dosikus »

YS писал(а):
Но, в общем, это интересный исторический комп.


Это еще и целая эпоха . :)))
Аватара пользователя
aam
Собутыльник Кота
Сообщения: 2994
Зарегистрирован: Сб фев 20, 2010 14:00:12
Откуда: Москва

Re: Вопросы по С/С++ (СИ)

Сообщение aam »

dosikus писал(а):Кто то так же и тебе может заявить - зачем делать DIY фентифлюшки , если их в большинстве своем проще купить?

Цена/качество? :)
Можно купить за 200 рэ китайский RGB-контроллер с пультом, но буду иметь лишь то, что накодили китайцы, да еще 100-герцовое мерцание от ШИМа.
А сам я сделаю себе то что захочу, да еще с возможностью перепрошить/добавить при желании. И мерцания не будет совсем, т. к. запитаю ленту постоянным током. Ну и надежность? Ведь делаю "по ракетным технологиям" :))
Так что цена деталей та же (я считал), но плюсы очевидны. Да и полученные знания нигде не купишь. А это самое главное. Конечно паять что-то одно - не интересно. Так, раньше я пробовал паять обычный обратноход, но теперь они меня уже абсолютно не втыкают, а вот более сложный регулируемый и мощный БП паять интересно.
Также и с процами - когда-то вставляло от часов... :))
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Вопросы по С/С++ (СИ)

Сообщение ploop »

YS писал(а):Просто в "то время" (восьмидесятые) меня еще на свете не было, потому иметь Спектрум я никак не мог

Время не помеха. Мой первый комп появился у меня в 98м, и это был спектрум :)))
В 2002м я устроился на работу, и с первых двух зарплат купил себе настоящий PC. От разрыва шаблона (да-да, я их "взрослых" только издалека видел) от такой вычислительной дури завязал с электроникой на несколько лет, вдарившись в программирование :)))
aam писал(а):Так что цена деталей та же (я считал), но плюсы очевидны. Да и полученные знания нигде не купишь. А это самое главное.

И удовольствие.
Но одно помнить надо: покупная вещь всегда дешевле, чем самодельная, с теми же характеристиками.
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: Вопросы по С/С++ (СИ)

Сообщение YS »

Мой первый комп появился у меня в 98м, и это был спектрум


А у меня первым был Pentium-133. :)) Уже в начале двухтысячных. В 2004-ом, кажется...
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Ответить

Вернуться в «Разные вопросы по МК»