Например TDA7294

 Форум РадиоКот • Просмотр темы - Вопросы по С/С++ (СИ)
Форум РадиоКот
Здесь можно немножко помяукать :)



Текущее время: Пн янв 21, 2019 00:04:51



Часовой пояс: UTC + 3 часа [ Летнее время ]


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 5859 ]     ... , , , , 293
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт янв 10, 2019 19:15:44 
Поставщик валерьянки для Кота

Карма: 44
Зарегистрирован: Пн апр 06, 2015 12:01:53
Сообщений: 2214
Откуда: москва, уфа
Рейтинг сообщения: 0
планирую инициализировать все поля структуры y одинаковой строкой
надо каждое поле и инициализировать
получаю варнинг
странно, у меня оно без варнингов собирается (gcc 6.5.0, 7.4.0, 8.2.0; -Wall)
инициализируется только первое поле структуры
так и должно быть


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт янв 10, 2019 20:42:55 
Встал на лапы

Карма: 5
Зарегистрирован: Вс ноя 17, 2013 00:34:34
Сообщений: 97
Рейтинг сообщения: 0
планирую инициализировать все поля структуры y одинаковой строкой
планировать мало, нужно сделать :) Ваш код инициализирует только первый элемент. Наверное, Вы по аналогии с
Код:
my_t var = {0};
решили, что всё проинициализируется "1"?
"Omitted fields are implicitly initialized the same as for objects that have static storage duration."
Предупреждение возникает, предположительно, из-за того, что элементы структуры тоже являются массивами. Но чтобы получить это предупреждение мне пришлось добавить gcc опцию -Wmissing-braces


Вернуться наверх
 
JLCPCB, 10 прототипов ПП всего за $2 и 2 дня доставка!

Крупнейший производитель печатных плат в Китае, 300,000+ заказчиков, 10,000+ он-лайн заказов в день.

Рассчитайте цену онлайн:https://jlcpcb.com/quote

Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт янв 11, 2019 08:33:07 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 86
Зарегистрирован: Чт дек 28, 2006 09:19:56
Сообщений: 12965
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
AAX писал(а):
решили, что всё проинициализируется "1"?
да, а разве я не прав? ведь
Код:
int arr[100] = {7};
struct var { int a; int b; int c} = {7};
проинициализирует все элементы и поля семерками... или нет? для структур правило "для всех" не действует?
AAX писал(а):
Но чтобы получить это предупреждение мне пришлось добавить gcc опцию -Wmissing-braces
у меня по умолчанию -Wall

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
удивительно, но при взгляде на многих сверху ничего не меняется...


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $88 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Второй конкурс по дизайну печатных плат от PCBWay!
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт янв 11, 2019 08:40:36 
Модератор
Аватар пользователя

Карма: 75
Зарегистрирован: Пт мар 19, 2010 00:09:57
Сообщений: 3944
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
ARV писал(а):
для структур правило "для всех" не действует?
Нет, конечно. С чего бы ?
Проинициализируется только первое поле структуры.
Такое правило (инициализация всех ячеек одним значением) только для массивов. В структурах могут быть разные типы полей, по этому подобное правило было бы нелогичным.

_________________
Я мненью вашему вращенье придавал, а осью был - мой детородный орган.


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт янв 11, 2019 08:46:53 
Друг Кота
Аватар пользователя

Карма: 74
Зарегистрирован: Чт апр 11, 2013 12:19:59
Сообщений: 3582
Откуда: Минск
Рейтинг сообщения: 0
ARV писал(а):
проинициализирует все элементы и поля семерками... или нет?
ЕМНИП, и для массива - нет. Только первый элемент, остальные - нулями.
Для GCC можно ещё '...' использовать для указания диапазона.
В любом случае, любые попытки инициализировать элементы чем-то, отличным от нуля, будут увеличивать размер прошивки, тем больше, чем больше элементов в массиве, структуре и т.д.


Вернуться наверх
 
Впервые на русском языке! «Поваренная книга разработчика аналоговых схем: Операционные усилители»

Практическое руководство «Разработчика аналоговой электроники по операционным усилителям», созданной инженерами компании Texas Instruments. Содержит схемы, примеры типовых расчетов с указанием формул и последовательности действий. Результаты расчетов дополнительно проверяются в программе SPICE-моделирования.
Подробнее...
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт янв 11, 2019 08:55:33 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 86
Зарегистрирован: Чт дек 28, 2006 09:19:56
Сообщений: 12965
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Аlex писал(а):
Такое правило (инициализация всех ячеек одним значением) только для массивов
мда... как обманчива природа... спасибо за науку.
WiseLord писал(а):
В любом случае, любые попытки инициализировать элементы чем-то, отличным от нуля, будут увеличивать размер прошивки
в моём случе речь об инициализации EEPROM, так что ничего увеличиваться не будет.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
удивительно, но при взгляде на многих сверху ничего не меняется...


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Пт янв 11, 2019 21:25:53 
Нашел транзистор. Понюхал.

Карма: 1
Зарегистрирован: Вт июн 07, 2011 09:03:18
Сообщений: 199
Рейтинг сообщения: 0
ЕМНИП, и для массива - нет. Только первый элемент, остальные - нулями.

Неохота искать источники, но я так тоже всегда считал. А значит откуда то вбилось.)


Вернуться наверх
 


Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Ср янв 16, 2019 03:16:44 
Встал на лапы

Карма: 5
Зарегистрирован: Вс ноя 17, 2013 00:34:34
Сообщений: 97
Рейтинг сообщения: 0
AAX писал(а):
решили, что всё проинициализируется "1"?
да, а разве я не прав?
я ж ссылку дал. Можно было бы за минуту прочесть, и понять, прав-не прав... Это ж не википедия :) Это руководство GCC.
AAX писал(а):
Но чтобы получить это предупреждение мне пришлось добавить gcc опцию -Wmissing-braces
у меня по умолчанию -Wall
Вы, наверное, решили, что опция -Wall включает все возможные предупреждения компилятора? This enables all the warnings about constructions that some users consider questionable. Впрочем, ходить по ссылкам, читать - скукота... гораздо лучше положиться на мнение неизвестного человека из интернетов, с вероятностью 95% - бестолкового, т.к. "толковым" в интернетах отвисать некогда ;) Мкей, тогда давайте так: -Wall не включает всех возможных предупреждений. С настройками по-умолчанию (-Wall) приведённая Вами конструкция не вызывает появления каких-либо предупреждений при компиляции при помощи gcc version 5.4.0 (AVR_8_bit_GNU_Toolchain_3.6.0_1734)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Ср янв 16, 2019 07:45:19 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 86
Зарегистрирован: Чт дек 28, 2006 09:19:56
Сообщений: 12965
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
AAX писал(а):
Это руководство GCC
всегда перед тем, как задать вопрос на форуме, пытаюсь найти ответ в доступных мне источниках, в частности, при помощи поиска в google
AAX писал(а):
приведённая Вами конструкция не вызывает появления каких-либо предупреждений при компиляции при помощи gcc version 5.4.0
в том-то и дело, что от версии к версии avr-gcc меняет своё поведение "по умолчанию". в документации тоже не всегда легко найти особенности именно этой версии. но главное - невозможно понять, почему именно так, а не иначе "было-стало". и в этом случае обращаюсь на форум.
AAX писал(а):
гораздо лучше положиться на мнение неизвестного человека из интернетов, с вероятностью 95% - бестолкового
вы сейчас себя имели ввиду? ;)

указанные мной версии компилятора выдают указанные мною предупреждения, и ведут себя так, как я описал. хоть я и имею набор версий от 3.х.х. до 8.х.х, проверять каждую как-то лень. причина "странной" на мой взгляд инициализации структур мне уже стала понятна - спасибо "бестолковым", кто уже успел мне объяснить. причина появления варнингов - не понятна до сих пор, как не понятен до сих пор и способ избавления от них (не считая отключения опции) без необходимости инициализировать каждое поле принудительно.

пока это всё.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
удивительно, но при взгляде на многих сверху ничего не меняется...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Ср янв 16, 2019 13:36:28 
Поставщик валерьянки для Кота

Карма: 44
Зарегистрирован: Пн апр 06, 2015 12:01:53
Сообщений: 2214
Откуда: москва, уфа
Рейтинг сообщения: 0
причина появления варнингов - не понятна до сих пор
глюк конкретной версии?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Ср янв 16, 2019 16:48:52 
Встал на лапы

Карма: 5
Зарегистрирован: Вс ноя 17, 2013 00:34:34
Сообщений: 97
Рейтинг сообщения: 0
вы сейчас себя имели ввиду? ;)
в том числе и себя, конечно.
Если человек высказывает мнение по обсуждаемому вопросу, обычно следует поинтересоваться источником его знания. И ознакомиться с ним, т.к. 1) люди не всегда формулируют точно, мануалы и учебники пишут лучше. Ну, и просто - при каждом пересказе информации свойственно искажаться. 2) человек, обычно, высказывается только о предмете, вызвавшем обсуждение. В мануале или в учебнике есть шанс получить дополнительное полезное знание, о вещах, не упомянутых в контексте данного обсуждения.
Даже если Вам повезло, и Вы встретились (чудом) в интернетах с "толковым" человеком, у него наверняка не будет времени вникать в нюансы Вашего вопроса и разжёвывать ответ. Это как у линуксоидов когда-то было принято: вместо ответа на вопрос отправлять читать нужный man.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Ср янв 16, 2019 19:59:59 
Потрогал лапой паяльник
Аватар пользователя

Карма: 8
Зарегистрирован: Сб сен 19, 2009 08:02:19
Сообщений: 301
Рейтинг сообщения: 0
...
Только первый элемент, остальные - нулями....

В данном случае только первый элемент. Заполнять остальное нулями компилятор не обязан. Чистка буфера до обмена в Си всегда отдавалась на откуп программисту. И это правильно.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Ср янв 16, 2019 21:40:07 
Это не хвост, это антенна
Аватар пользователя

Карма: 28
Зарегистрирован: Вс июн 24, 2012 17:07:00
Сообщений: 1405
Откуда: Лен.Обл.
Рейтинг сообщения: 0
А вот интересно, если написать static int Buffer[100], компилятор заполнит буфер нулями? Вообще, должен - инициализация статических переменных нулями гарантируется.

_________________
И день и ночь в пути...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Ср янв 16, 2019 21:52:22 
Нашел транзистор. Понюхал.

Карма: 1
Зарегистрирован: Вт июн 07, 2011 09:03:18
Сообщений: 199
Рейтинг сообщения: 0
А неинициализированные глобальные переменные (в т.ч. и массивы) разве не обнуляются компилятором, стартап секцией?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Ср янв 16, 2019 22:13:15 
Друг Кота
Аватар пользователя

Карма: 74
Зарегистрирован: Чт апр 11, 2013 12:19:59
Сообщений: 3582
Откуда: Минск
Рейтинг сообщения: 0
Статические точно обнуляются, а глобальные, как отметил shindax, в принципе, не обязательно, но практически наверняка, компилятор их оптимизирует подобно статическим. По крайней мере, в случае avr-gcc и типичных флагах компиляции (-Os) разницы между прошивками, где глобальные массивы объявлены как static, и прошивками, где - не static, никакой нет.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Ср янв 16, 2019 22:42:37 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 86
Зарегистрирован: Чт дек 28, 2006 09:19:56
Сообщений: 12965
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
глобальные переменные, т.е. не являющиеся локальными, компилятор всегда обнуляет наравне со статическими, в этом сомнений нет.

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
удивительно, но при взгляде на многих сверху ничего не меняется...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт янв 17, 2019 18:11:53 
Прорезались зубы
Аватар пользователя

Карма: 3
Зарегистрирован: Сб янв 23, 2016 01:59:59
Сообщений: 221
Откуда: Чебоксары
Рейтинг сообщения: 0
здравствуйте! проблема с кодом, выложить пока не могу, т. к. не рядом с компом. но и не могу успокоиться найдя проблему.суть вот в чем:в целом код работал, после незначительных, на мой взгляд, манипуляции с переменными он перестал выполнять свои функции. пытался отладчиком отловить баг, но не смог. компилируется чисто, при отладке в дис. коде вижу что происходит сброс PC(rjump PC 0*0000) . Подскажите пожалуйста, почему эта гадость могла возникнуть, где копать?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт янв 17, 2019 18:53:37 
Это не хвост, это антенна
Аватар пользователя

Карма: 28
Зарегистрирован: Вс июн 24, 2012 17:07:00
Сообщений: 1405
Откуда: Лен.Обл.
Рейтинг сообщения: 1
Варианты, когда код перестаёт работать после незначительного изменения:
1) Вы не использовали volatile там где надо.
2) У вас утечка памяти.
3) Вы выходите за пределы массивов.
4) В коде связанные переменные, находящиеся в разных модулях - изменился порядок инициализации.

Советую скачать cppcheck (он бесплатный) http://cppcheck.sourceforge.net/ и проверить им программу.

_________________
И день и ночь в пути...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Чт янв 17, 2019 23:15:36 
Прорезались зубы
Аватар пользователя

Карма: 3
Зарегистрирован: Сб янв 23, 2016 01:59:59
Сообщений: 221
Откуда: Чебоксары
Рейтинг сообщения: 0
Варианты, когда код перестаёт работать после незначительного изменения
спасибо,покопаюсь. из всего Вами перечисленного утечка памяти особо привлекло внимание.Такое понятие в микроконтроллерах я еще не слышал.

Кстати вот собственно и код:


Добавлено after 1 hour 3 minutes 21 second:
Советую скачать cppcheck
хороший инструмент,необходимая вещь для новичка!отсканировал свой косячный код выдало несколько явных ошибок и одну сомнительную,все исправил и заработало. Спасибо большое,сегодня спать хоть буду спокойно :beer:


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 5859 ]     ... , , , , 293



Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на форуме

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


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y