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

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
arkhnchul
Друг Кота
Сообщения: 3092
Зарегистрирован: Пн апр 06, 2015 11:01:53
Откуда: москва, уфа

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

Сообщение arkhnchul »

ROMan2947 писал(а):Массив структур имеете ввиду?

или указателей на структуры.
[uquote="ARV",url="/forum/viewtopic.php?p=3372044#p3372044"]см. выше - ROMan2947 пытался, не вышло.[/uquote]
у него с EEPROM не вышло. А вообще вполне работает -
Спойлер

Код: Выделить всё

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>

typedef struct {
    uint8_t Rashod;
    uint8_t Temperatura;

} Dannie_Mecyac;

typedef struct {
    Dannie_Mecyac Yanvar;
    Dannie_Mecyac Fevral;
    Dannie_Mecyac Mart;
    Dannie_Mecyac Dekabr;
} Mecyac;

int main(int argc, char *argv[]) {
    Dannie_Mecyac GWS_Yanvar={10,20};
    Dannie_Mecyac GWS_Fevral={0};
    Dannie_Mecyac GWS_Mart={11,5};

    Mecyac GWS_Dannie={GWS_Yanvar,GWS_Fevral,GWS_Mart}; // на такую строчку компилятор ругается на какую то константу ссылается

    Mecyac *PtrGWS_Dannie=&GWS_Dannie;

    printf("%d %d\n",GWS_Dannie.Yanvar.Rashod, PtrGWS_Dannie->Mart.Temperatura);
}

Аватара пользователя
ROMan2947
Грызет канифоль
Сообщения: 287
Зарегистрирован: Сб янв 23, 2016 00:59:59
Откуда: Чебоксары

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

Сообщение ROMan2947 »

[uquote="ARV",url="/forum/viewtopic.php?p=3372054#p3372054"]#include <avr/eeprom.h>?![/uquote]делал...

[uquote="ARV",url="/forum/viewtopic.php?p=3372054#p3372054"]вам нужен массив структур[/uquote]придется переписать :?

[uquote="ARV",url="/forum/viewtopic.php?p=3372054#p3372054"]при работе с EEPROM точечная нотация не прокатит[/uquote]это связано только с работой с EEPROM? точечная не идет а стрелочная как себя поведет?
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

стрелочная точно так же не пойдет: не умеет AVR-GCC работать так с EEPROM. при помощи функций eeprom_read_byte, eeprom_read_word, eeprom_read_dwod и eeprom_read_block (аналогично и для write) вы должны будете ручками считывать данные из EEPROM в переменную в обычном ОЗУ, и уже с нею работать, как принято.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
arkhnchul
Друг Кота
Сообщения: 3092
Зарегистрирован: Пн апр 06, 2015 11:01:53
Откуда: москва, уфа

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

Сообщение arkhnchul »

[uquote="ROMan2947",url="/forum/viewtopic.php?p=3372064#p3372064"]это связано только с работой с EEPROM? точечная не идет а стрелочная как себя поведет?[/uquote]
точки для непосредственных значений, стрелки - для указателей. С EEPROM-ом не связано, что положите туда - с тем и работайте.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

arkhnchul писал(а):С EEPROM-ом не связано
как раз связано: ни точечная, ни стрелочная нотация не будет работать с описанными в EEPROM переменными и указателями на них.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
ROMan2947
Грызет канифоль
Сообщения: 287
Зарегистрирован: Сб янв 23, 2016 00:59:59
Откуда: Чебоксары

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

Сообщение ROMan2947 »

[uquote="arkhnchul",url="/forum/viewtopic.php?p=3372073#p3372073"]точки для непосредственных значений, стрелки - для указателей.[/uquote] ну по поводу этого я в курсе,я и имел ввиду может при использовании указателей можно будет работать с EEPROM...оказалось нет...

Добавлено after 1 minute 9 seconds:
Спасибо Вам, суть понял, буду разбираться :beer:

Добавлено after 4 minutes 5 seconds:
Частенько начал сталкиваться с возможность и не возможностью компилятора, что нужно лопатить для изучения компилятора именно AVR-GCC.документация может или книга,где подробно описывалось бы как он работает и хотелось бы на русском....?
arkhnchul
Друг Кота
Сообщения: 3092
Зарегистрирован: Пн апр 06, 2015 11:01:53
Откуда: москва, уфа

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

Сообщение arkhnchul »

[uquote="ARV",url="/forum/viewtopic.php?p=3372075#p3372075"]ни точечная, ни стрелочная нотация не будет работать с описанными в EEPROM переменными и указателями на них.[/uquote]
да, извиняюсь, забыл, как оно там в AVR. Привык к stm-ам)
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

ROMan2947 писал(а):что нужно лопатить для изучения компилятора именно AVR-GCC.документация может или книга,где подробно описывалось бы как он работает и хотелось бы на русском....?
вот мои скромные потуги: https://simple-devices.ru/articles/7-so ... avr-studio
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
baghear
Опытный кот
Сообщения: 791
Зарегистрирован: Вт июн 17, 2014 00:34:26

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

Сообщение baghear »

Добрый день, подскажите пожалуйста в каких случаях при программировании МК используется куча.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

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

Мой уютный бложик... заходите!
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

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

Сообщение Мурик »

Сейчас в МК ОЗУ относительно не мало. В МК за 1.8$ может быть 64 КБ ОЗУ и больше (зависит от модели). Или можно подключить внешнюю микросхему ОЗУ на несколько десятков мегабайт.
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

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

Сообщение dosikus »

[uquote="ARV",url="/forum/viewtopic.php?p=3392667#p3392667"]когда ОЗУ немеряно, а думать лень.[/uquote]

Ну как же, оси сделаны для лохов а ARV д'артаньян...
Аватара пользователя
baghear
Опытный кот
Сообщения: 791
Зарегистрирован: Вт июн 17, 2014 00:34:26

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

Сообщение baghear »

А по сути, то что в осях выделяется память из кучи вкурсе, не в курсе какие преимущества.
arkhnchul
Друг Кота
Сообщения: 3092
Зарегистрирован: Пн апр 06, 2015 11:01:53
Откуда: москва, уфа

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

Сообщение arkhnchul »

ну букварь же. Вот прям по первой ссылке из гугла
Stack
very fast access
don't have to explicitly de-allocate variables
space is managed efficiently by CPU, memory will not become fragmented
local variables only
limit on stack size (OS-dependent)
variables cannot be resized

Heap
variables can be accessed globally
no limit on memory size
(relatively) slower access
no guaranteed efficient use of space, memory may become fragmented over time as blocks of memory are allocated, then freed
you must manage memory (you're in charge of allocating and freeing variables)
variables can be resized using realloc()
что-то перевести?
если говорим про контроллеры, то еще стоит помнить, что malloc штука достаточно дорогая.
Аватара пользователя
baghear
Опытный кот
Сообщения: 791
Зарегистрирован: Вт июн 17, 2014 00:34:26

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

Сообщение baghear »

[uquote="baghear",url="/forum/viewtopic.php?p=3392483#p3392483"]Добрый день, подскажите пожалуйста в каких случаях при программировании МК используется куча.[/uquote]
Меня интересует в каких случаях???
arkhnchul
Друг Кота
Сообщения: 3092
Зарегистрирован: Пн апр 06, 2015 11:01:53
Откуда: москва, уфа

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

Сообщение arkhnchul »

когда:
а) неизвестно заранее, сколько памяти понадобится
б) но понадобится точно и сравнительно много
Аватара пользователя
da-nie
Говорящий с текстолитом
Сообщения: 1590
Зарегистрирован: Вс июн 24, 2012 16:07:00
Откуда: Лен.Обл.
Контактная информация:

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

Сообщение da-nie »

Меня интересует в каких случаях???


1) Если хочется сделать "смотри, как я умею".
2) Если возникло острое желание применить stl (тут на хабре Си++ 11 (хотя именно 11 я чего-то в коде не углядел) на stm32 запускали, так что, желание запустить stl тоже не будет противоестественным).
3) Хочется неопределённости работы программы в условиях ограниченных ресурсов (может, иногда хватит памяти и программа не упадёт?).

8) :)) Пожалуй, всё. :)
И день и ночь в пути...
Мои программки: https://github.com/da-nie
Мои публикации: https://habr.com/ru/users/da-nie/posts/
Мои видео: https://www.youtube.com/channel/UCUroi3 ... 52g/videos
Аватара пользователя
Siarzhuk
Потрогал лапой паяльник
Сообщения: 353
Зарегистрирован: Вс янв 19, 2014 22:41:55

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

Сообщение Siarzhuk »

[uquote="arkhnchul",url="/forum/viewtopic.php?p=3393324#p3393324"]
Stack
[...]
variables cannot be resized
[/uquote]
Ох рассказать-бы им про alloca. :-) Ресайз из него, конечно небесспорный, но таки и далеко не всякий realloc вернёт тот-же участок памяти при нарастании аппетита.
Одновременным нажатием LIGHT и POWER, РП Sangean ATS-909X (ver 1.29) превращается в ATS-909XR! ;-)
arkhnchul
Друг Кота
Сообщения: 3092
Зарегистрирован: Пн апр 06, 2015 11:01:53
Откуда: москва, уфа

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

Сообщение arkhnchul »

[uquote="Siarzhuk",url="/forum/viewtopic.php?p=3393612#p3393612"]далеко не всякий realloc вернёт тот-же участок памяти при нарастании аппетита.[/uquote]
он хотя бы освободит старый - или можно то же сделать руками, malloc-memcpy/memmove-free. С alloca я чеснговоря затруднюсь сказать, чего будет после free. В лучшем случае имхо предыдущий выделенный участок так и будет занимать стек.
Аватара пользователя
da-nie
Говорящий с текстолитом
Сообщения: 1590
Зарегистрирован: Вс июн 24, 2012 16:07:00
Откуда: Лен.Обл.
Контактная информация:

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

Сообщение da-nie »

alloca


Только этой функции нет в стандарте. :) Лучше не использовать.

С alloca я чеснговоря затруднюсь сказать, чего будет после free.


Ну что будет... упадёт программа. :)
И день и ночь в пути...
Мои программки: https://github.com/da-nie
Мои публикации: https://habr.com/ru/users/da-nie/posts/
Мои видео: https://www.youtube.com/channel/UCUroi3 ... 52g/videos
Ответить

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