Например TDA7294

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





Текущее время: Чт апр 25, 2024 21:48:20

Часовой пояс: UTC + 3 часа


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



Начать новую тему Ответить на тему  [ Сообщений: 7588 ]     ... , , , 300, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Сб апр 20, 2019 06:31:04 
Друг Кота
Аватар пользователя

Карма: 86
Рейтинг сообщений: 1018
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4875
Откуда: Минск
Рейтинг сообщения: 0
Ну... разбрасывание .c файлов по разным каталогам тоже не упрощает Makefile.

Честно говоря, я и сам в своих проектах часто использую маску по расширению .c, чтобы не переусложнять Makefile. Но всё-таки "в душе" считаю это не совсем правильным.


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

Карма: 33
Рейтинг сообщений: 148
Зарегистрирован: Вс июн 24, 2012 16:07:00
Сообщений: 1573
Откуда: Лен.Обл.
Рейтинг сообщения: 0
Цитата:
Но всё-таки "в душе" считаю это не совсем правильным.


А напрасно. Когда количество файлов модулей подойдёт к тысяче, вам очень пригодится именно маска (поясню - речь не о микроконтроллерах, где такое вряд ли возможно, речь о программном обеспечении для PC). :)

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


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

Карма: 86
Рейтинг сообщений: 1018
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4875
Откуда: Минск
Рейтинг сообщения: 0
В больших проектах уже работают другие системы сборки типа autotools, cmake, qmake и прочие, генерирующие Makefile.


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

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

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Сб апр 20, 2019 22:50:22 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 41
Рейтинг сообщений: 306
Зарегистрирован: Пт сен 07, 2018 20:20:02
Сообщений: 2296
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Не обязательно. У меня есть проекты с сотнями исходных файлов, благополучно собирающиеся обычным GNU make. Необходимость в autotools/cmake возникает только на кроссплатформенных проектах, где действительно нужна автоконфигурация.
Для МК тоже бывают проекты с огромным количеством исходников. Другое дело, что бОльшая часть этих исходников является ресурсными файлами, а не кодом. Например, для каждого клиента можно выбрать свои фонты, иконки, сообщения, фоновый рисунок и логотип. В AT24C256 много ресурсов можно прошить )


Вернуться наверх
 
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вт май 07, 2019 11:05:55 
Прорезались зубы
Аватар пользователя

Зарегистрирован: Пт окт 21, 2011 14:39:31
Сообщений: 210
Рейтинг сообщения: 0
Как в .h файле в обьявлении класса обьявить массив указателей на методы этого-же класса?
Если делаю так:
Спойлер.h
Код:
#ifndef __SENSORCONF_H__
#define __SENSORCONF_H__

#include <avr/io.h>

class SensorConf
{
   //variables
   public:
   public:
   int Alarm_1_TemperatureVal;
   unsigned char MenuN;   // номер функцию меню
   void menu_1(void);
   void menu_2(void);
   void menu_3(void);
   void menu_4(void);
   void menu_5(void);
   void menu_6(void);
   void menu_7(void);
   void menu_8(void);
   void menu_0(void);
   
   void (SensorConf::*Menu[10])(void);    //  ТУТ ЗАТЫК
   
   static unsigned char Sensor_Namber;
   
   void menu_start(void);
   
   protected:
   private:

   //functions
   public:
   SensorConf();
}; //SensorConf

#endif //__SENSORCONF_H__


.cpp
Код:
#include "SensorConf.h"

   void SensorConf::menu_1(void){};
   void SensorConf::menu_2(void){};
   void SensorConf::menu_3(void){};
   void SensorConf::menu_4(void){};
   void SensorConf::menu_5(void){};
   void SensorConf::menu_6(void){};
   void SensorConf::menu_7(void){};
   void SensorConf::menu_8(void){};
   void SensorConf::menu_0(void){};

   void (SensorConf::*Menu[10])(void) = {
      &SensorConf::menu_0,
      &SensorConf::menu_1,
      &SensorConf::menu_2,
      &SensorConf::menu_3,
      &SensorConf::menu_4,
      &SensorConf::menu_5,
      &SensorConf::menu_6,
      &SensorConf::menu_7,
      &SensorConf::menu_8,
      &SensorConf::menu_0   };
   
   void SensorConf::menu_start(void)
   {
      (this->*Menu[MenuN])();
   };

   SensorConf::SensorConf()
   {
      MenuN = 1;
      Alarm_1_TemperatureVal = 24;
   };

То при вызове "menu_start" микроконтроллер уходит с брос, судя по отладке массив "Menu" заполнен нулями.
Если в хедере закомментировать "void (SensorConf::*Menu[10])(void);" то работает нормально. Как так то?


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вт май 07, 2019 11:36:54 
Говорящий с текстолитом
Аватар пользователя

Карма: 33
Рейтинг сообщений: 148
Зарегистрирован: Вс июн 24, 2012 16:07:00
Сообщений: 1573
Откуда: Лен.Обл.
Рейтинг сообщения: 1
Цитата:
void (SensorConf::*Menu[10])(void) = {
&SensorConf::menu_0,
&SensorConf::menu_1,
&SensorConf::menu_2,
&SensorConf::menu_3,
&SensorConf::menu_4,
&SensorConf::menu_5,
&SensorConf::menu_6,
&SensorConf::menu_7,
&SensorConf::menu_8,
&SensorConf::menu_0 };


Такая инициализация работает вне класса? Хм.

Вообще-то, очень не рекомендую делать указатели на функции класса. На то есть вот какие причины.

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


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

Карма: 20
Рейтинг сообщений: 253
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 2090
Рейтинг сообщения: 1
Как в .h файле в обьявлении класса обьявить массив указателей на методы этого-же класса?

Код:
class SensorConf
{
public:
   using FP = void(SensorConf::*)();
   FP Menu[10] = { &SensorConf::menu_1, &SensorConf::menu_2, ... };
   uint8_t MenuN;
   static uint8_t SensorNumber;

   void menu_1();
   void menu_2();
   ...

   void menu_start() { (this->*Menu[MenuN])(); }
};


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

Зарегистрирован: Пт окт 21, 2011 14:39:31
Сообщений: 210
Рейтинг сообщения: 0
Вообще-то, очень не рекомендую делать указатели на функции класса. На то есть вот какие причины.

Это не для средних любительских умов )).

Reflector
Спасибо! Это работает.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Ср май 08, 2019 13:06:20 
Говорящий с текстолитом
Аватар пользователя

Карма: 33
Рейтинг сообщений: 148
Зарегистрирован: Вс июн 24, 2012 16:07:00
Сообщений: 1573
Откуда: Лен.Обл.
Рейтинг сообщения: 0
Цитата:
Это не для средних любительских умов )).


Вот поэтому и не стоит их использовать - нарвётесь на удивительные вещи. Например, на такую. В этом компиляторе даже не компилируется. А в gcc-2.95 такое компилировалось, но работало не так, как ожидается - вызывалась функция базового класса, а не подклассов.

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Вт июн 04, 2019 03:13:11 
Вымогатель припоя

Зарегистрирован: Вт ноя 02, 2010 17:46:37
Сообщений: 574
Рейтинг сообщения: 0
Принято ли в IDE добавлять хедер шаблонного класса ?
Начал изучать с++, был удивлен что нельзя выделить функции в отельный файл как уже привык для с проектов.


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

Карма: 33
Рейтинг сообщений: 148
Зарегистрирован: Вс июн 24, 2012 16:07:00
Сообщений: 1573
Откуда: Лен.Обл.
Рейтинг сообщения: 0
Шаблонного? Шаблоны располагаются в h-файлах.

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


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

Карма: 41
Рейтинг сообщений: 306
Зарегистрирован: Пт сен 07, 2018 20:20:02
Сообщений: 2296
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
pokk, шаблонный класc есть включаемый файл и добавляется обычным #include. Добавлять в проект IDE его есть смысл только тогда, когда он может модифицироваться, а собираете проект средствами IDE, а не собственным makefile. Иначе, при модификации включаемого файла, IDE или make не будут знать, что он изменился. А значит могут не пересобрать включающие этот файл исходники, решив, что их объектные файлы актуальны.
И функции, и методы в C++ вполне можно выделять в отдельный файл. Функции добавляются так же как в C. Ведь, строго говоря, в C++ функций нет. Есть совместимость с C, позволяющая использовать функции.
Методы, выносимые в отдельный файл, оформляются в виде наследуемого класса.


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

Карма: 33
Рейтинг сообщений: 148
Зарегистрирован: Вс июн 24, 2012 16:07:00
Сообщений: 1573
Откуда: Лен.Обл.
Рейтинг сообщения: 0
Цитата:
Начал изучать с++, был удивлен что нельзя выделить функции в отельный файл как уже привык для с проектов.


Видимо, я неправильно понял, в чём у вас проблема. Не могли бы вы объяснить, что вы хотите сделать по пунктам:
1) Что за шаблонный класс вы хотите добавить в ide? Что это значит и что имеется в виду?
2) Что значит, "функции в отдельный файл"? Какие функции? Шаблонные? Обычные? Методы класса? Что значит, "в отдельный файл"? У вас они должны быть объявлены в *.h и реализованы в *.cpp/*.c/*.cc.

Цитата:
Ведь, строго говоря, в C++ функций нет.


Что вы имеете в виду?

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


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

Карма: 41
Рейтинг сообщений: 306
Зарегистрирован: Пт сен 07, 2018 20:20:02
Сообщений: 2296
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
da-nie, только то, что сказал. Функции в C++ есть только на уровне совместимости с С. Сама же парадигма объектной ориентированости их исключает, предполагая, что все реализуется на методах.


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

Карма: 20
Рейтинг сообщений: 253
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 2090
Рейтинг сообщения: 0
Функции в C++ есть только на уровне совместимости с С. Сама же парадигма объектной ориентированости их исключает, предполагая, что все реализуется на методах.

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Ср июн 05, 2019 09:41:18 
Вымогатель припоя

Зарегистрирован: Вт ноя 02, 2010 17:46:37
Сообщений: 574
Рейтинг сообщения: 0
Цитата:
Что за шаблонный класс вы хотите добавить в ide?

Для изучения взял пример, создать класс кольцевых буферов(RingBuf), и через параметр шаблона передавать максимальный размер кольцевого буфера.
Ну и соответственно, я хотел вытащить функции(методы?) класса RingBuf, в отдельный файл .сpp и добавить его в IDE так как еще 100500 раз буду их изменять. В принципе я понимаю почему это нельзя сделать, и почему они только в H файле остаются. Я даже нашел что .сpp с методами инклудят в конце header'a, но по мне это все костыли. Если оставить как есть(не добавлять header в IDE), и сделать только inlude "RingBuf.h" , то после разрастания проекта как найти файл которые глубоко зарытый файл(file3.h) (main.cpp содержить file2.h ->....> file3.h )?
Цитата:
2) Что значит, "функции в отдельный файл"? Какие функции? Шаблонные? Обычные? Методы класса? Что значит, "в отдельный файл"? У вас они должны быть объявлены в *.h и реализованы в *.cpp/*.c/*.cc.

Вот наброски:
Код:

template <typename T,int T2>
class RingBuff
{
private:
    T *stackPtr;    // указатель на стек
    int size;       // размер стека
    T top;          // вершина стека
    T Array[T2];
public:
    RingBuff();// по умолчанию размер стека равен 10 элементам
    bool push(const T s); // поместить элемент в стек
};

//==========================
/*
    * @Описание:     Конструктор
    * @Параметр:   
    * @Возврат:     Нету
*/
template <typename T,int T2>RingBuff<T,T2>::RingBuff()
{
    stackPtr=Array;
    top=0;
}
//==========================
/*
    * @Описание:    Описание функции.
    * @Параметр:   
    * @Возврат:     Нету
*/
template <typename T,int T2>
bool RingBuff<T,T2>::push(const T value)
{
    if (top == size - 1)
        return false; // стек полон
 
    top++;
    stackPtr[top] = value; // помещаем элемент в стек
 
    return true; // успешное выполнение операции
}


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

Карма: 20
Рейтинг сообщений: 253
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 2090
Рейтинг сообщения: 0
Если оставить как есть(не добавлять header в IDE), и сделать только inlude "RingBuf.h" , то после разрастания проекта как найти файл которые глубоко зарытый файл(file3.h) (main.cpp содержить file2.h ->....> file3.h )?

Надуманная проблема, добавление хедера в IDE ни на что не влияет.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Ср июн 05, 2019 17:12:15 
Говорящий с текстолитом
Аватар пользователя

Карма: 33
Рейтинг сообщений: 148
Зарегистрирован: Вс июн 24, 2012 16:07:00
Сообщений: 1573
Откуда: Лен.Обл.
Рейтинг сообщения: 0
Цитата:
da-nie, только то, что сказал. Функции в C++ есть только на уровне совместимости с С. Сама же парадигма объектной ориентированости их исключает, предполагая, что все реализуется на методах.


А С++ не только ООП ( кстати, ООП, говорят, сильно лучше в Objective C).

Цитата:
Ну и соответственно, я хотел вытащить функции(методы?) класса RingBuf, в отдельный файл .сpp и добавить его в IDE


Так нельзя. Все шаблоны только в заголовочных файлах. И компилятор без специализации шаблона не проверяет корректность кода.

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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Вопросы по С/С++ (СИ)
СообщениеДобавлено: Ср июл 17, 2019 21:02:32 
Грызет канифоль
Аватар пользователя

Карма: 2
Рейтинг сообщений: 10
Зарегистрирован: Сб янв 23, 2016 00:59:59
Сообщений: 287
Откуда: Чебоксары
Рейтинг сообщения: 0
Здравствуйте Уважаемые!
Столкнулся с такой ситуацией, что стало мне нужно в массив закинуть адреса полей структуры.Но что-то ничего не выходит, да и в сети не нашел ответа...Есть ли такая возможность в си?
Спойлер
Код:
typedef struct
{
   uint8_t a;
   uint8_t b;
   uint8_t c;
}mytyp;

mytyp mystruct={0};
mytyp *Ptrmystruct=&mystruct;
   
mytyp *Ptrmymassiv[3]={&(Ptrmystruct->a),&(Ptrmystruct->b),&(Ptrmystruct->c),};


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

Карма: 86
Рейтинг сообщений: 1018
Зарегистрирован: Чт апр 11, 2013 11:19:59
Сообщений: 4875
Откуда: Минск
Рейтинг сообщения: 0
Немножко бред написан. Ну если нужен массив указателей на поля, которые uint8_t, ну так и делайте именно такой массив, uint8_t *array[3].


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

Часовой пояс: UTC + 3 часа


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

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


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

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


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