Например TDA7294

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

Текущее время: Ср фев 25, 2026 06:48:35

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


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



Начать новую тему Ответить на тему  [ Сообщений: 2383 ]     ... , , , 37, , , ...  
Автор Сообщение
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Чт окт 31, 2019 16:35:07 
Друг Кота

Карма: 38
Рейтинг сообщений: 623
Зарегистрирован: Пн апр 06, 2015 11:01:53
Сообщений: 3092
Откуда: москва, уфа
Рейтинг сообщения: 0
Кито подскажет как КОШЕРСТНО прописывается
передача дву и более мерных массивов указателей на функцию
аргументами для (другой) функции?

такое у наркологов лучше поспрашивать.
если серьезно - это чисто академический интерес, или на самом деле зачем-то понадобилось? указатель на int должен сойти вроде.


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Чт окт 31, 2019 18:09:42 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1505
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15483
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Да вот крутится "навязчива идейка"...
Пока в тестах...
:roll:


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Чт окт 31, 2019 20:20:11 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2121
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18476
Откуда: Новочеркасск
Рейтинг сообщения: 3
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
лично я всегда начинаю с описания собственного типа.
допустим, нужен указатель на функцию с тремя параметрами char, int и long? возвращающую int. определяем его:
Код:
typedef int (*func_ptr)(char, int, long);
теперь, имея тип, можно сделать хоть семимерный массив без особого труда
Код:
func_ptr array[10][20]; // например, так для двумерного варианта
ну а потом, заполнив предварительно массив значениями, можно вызывать функции:
Код:
int result = array[i][j](10,20,30);
по-моему, ничего сложного

Добавлено after 5 minutes 27 seconds:
перечитал это
BOB51 писал(а):
передача дву и более мерных массивов указателей на функцию
аргументами для (другой) функции?
и подумал, что наверное, речь шла о том, как такой массив передать в функцию... ну так подход тот же самый - определяем тип, а потом в функцию передаем параметр этого типа:
Код:
typedef func_ptr array_t[10][20];

void my_func(array_t parameter); // прототип функции с параметром этого типа

array_t my_array; // объявили переменную этого типа (т.е. двумерный массив)

my_func(my_array); // передали в функцию

// а так в функции обрабатываем переданый параметр, вызывая все функции из массива
void my_func(array_t parameter){
  for(uint8_t i=0; i<10; i++)
    for(uint8_t j=0; j<20; j++)
      parameter[i][j](10,20,30);
}


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

Мой уютный бложик... заходите!


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Пт ноя 01, 2019 08:54:33 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1505
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15483
Откуда: ДОНЕЦК
Рейтинг сообщения: 4
Штука несколько более садистская...
Есть КОТ(main)
в нем массив СЫР с указателями на функции размещенные во внешнем файле КРЫС...
каждая из функций КРЫСа может при необходимости заменить содержимое
массива СЫР находящегося в области КОТа...
и КОТ может при надобности выполнить одну из функций КРЫСа по указателю , который вытащен из СЫРа
Ну и вдобавок есть еще два объекта - КОРМИЛКА и ПОИЛКА.
КРЫС и КОТ одинаково могут использовать их содержимое (методы) внутри своих функций.
Именно внутри функций без передачи ссылки на КОРМИЛКу и ПОИЛКу параметрами этих функций...
При том, что разновидностей КРЫС в одном проекте может бысть несколько.
Вобщем... САДОМАЗОХИЗМ и измышления...
:roll:
:dont_know:


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Пт ноя 01, 2019 10:24:29 
Собутыльник Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 433
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2559
Рейтинг сообщения: 0
Велосипедостроение детектед! ООП придумано когда Земля была ещё чуть тёплая.


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Пт ноя 01, 2019 10:39:42 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2121
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18476
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
BOB51 писал(а):
САДОМАЗОХИЗМ
согласен. особенно манера изложения.

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

Мой уютный бложик... заходите!


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Пт ноя 01, 2019 12:42:17 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1505
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15483
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Это из интереса - можно ли повторить простенькую рабочую прожку,
что давненько на "чистом ассемблере" написана была без особого труда под Си...
Пока что ... ОБЛОМС...
всплывают весьма муторноэтажные конструкции...
:(
или такой алгоритм обработки под Си применить проблематично,
надо чего переиначить (а нежелательно... оченно укусненькое решение было...)
:roll:

Эти "хвосты" вылезать начинают при желании разбить программу на раздельные файлы,
имеющие совместно-перекрестный доступ к внутреннему функционалу друг дружки - проблемы "границ видимости".
Возможно не та "точка разбиения" выбрана.
:roll:


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Пт ноя 01, 2019 12:59:56 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2121
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18476
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
BOB51, нельзя подходить методами программирования на ассемблере к программированию на Си, тем более С++. если вы умеете собирать песок в мешок пинцетом, то переход к лопате означает увеличение производительности вашей работы, но совсем не означает, что вам будет просто взять отдельную песчинку новым инструментом! меняя инструмент, надо использовать его возможности, а не страдать о том, что упущены возможности предыдущего.

есть виртуозы, которые трехкубовым ковшом экскаватора подбирают спичечный коробок, т.е. это сделать можно. но нужно ли это делать?!

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

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

Мой уютный бложик... заходите!


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Пт ноя 01, 2019 13:30:49 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1505
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15483
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Иногда таки не мешает и "пободать стенку" - побочная разборка нюансов даже
при отрицательном общем результате дает плюсики (в другом месте полученный материал пригодится).
Однако для понимания где чего переиначить надо "бодать" до исчерпания последней имеющейся возможности.
8)
Вроде с typedef прояснилось...
МРУММ!!
:hunger:
Возможно частично вопрос закроет.
:beer:

Так из размышлений...
дополнительные
#include mmmm.h
могут прописываться как в самом test.c(test.ccp) файле, так и в заголовочнике данного файла
test.h...
на что может повлиять разница размещения записей?

допустим имеется :
test1.h test1.cpp
test2.h test2.cpp
и
Htest.h Htest.cpp

вариант 1

Htest.h содержит
#include "test1.h" // скобки или <> в данном случае неважно -
// о разнице в области поиска размещения речь не идет
#include "test2.h"

Htest.cpp содержит
#include "Htest.h"

и вариант 2
Htest.h не содержит строчек подключения, а


Htest.cpp содержит
#include "Htest.h"
#include "test1.h"
#include "test2.h"

в принципе вроде равнозначно?
но так ли это ...
:dont_know:


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Пт ноя 01, 2019 14:01:32 
Друг Кота

Карма: 38
Рейтинг сообщений: 623
Зарегистрирован: Пн апр 06, 2015 11:01:53
Сообщений: 3092
Откуда: москва, уфа
Рейтинг сообщения: 0
в Htest.h используются какие-то конструкции из test1 и test2? если да - включаем их туда, если нет - то нет.
даже если препроцессор разберется и технически все будет равнозначно - в целом удобнее в каждый файл включать только те заголовочники, которые нужны непосредственно ему.


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Сб ноя 02, 2019 18:06:48 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1505
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15483
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
ПЕЧАЛЬКА однако...
Приятно - мяконькие typedef не слишком хорошо уживаются с многофайловиками и extern...
В отличии от линейно - однофайлового варианта с "условно-независимыми" библиотеками...
Приходится к задуренной "стандартной" системе объявления указателей (множествоскобочной) обращаться...
А там... "указатель указателя" как-то... напряжно воспринимаются... И описания аки их конструировать (за какими скобками * ставить) весьма мало и смуторно...
:(
Воть такой тест-пример (абсолютно случайная задачка для отработки перекрестных вызовов при нескольких файлах в проекте):
Вложение:
mino_1.zip [8.55 KiB]
Скачиваний: 231

Замена на typedef в нем работать не будет.
А в текущем виде и компилируется и платкой отрабатывается (сбрасывает в терминалку отчет-распечатку).
:roll:
Может еще какой вариант упущен...
:dont_know:


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Сб ноя 02, 2019 18:51:09 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2121
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18476
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
вегда typedef будет работатть, если вы ПОНИМАЕТЕ, что это такое и для чего оно.
если вам нужно, чтобы введенный вами тип понимался в разных файлах, вы должны описать этот тип в файле-заголовке и подключить этот заголовок везде, где требуется этот тип. вы же можете пользоваться типом uint32_t везде, где подключили stdint.h? точно так же вы сможете пользоваться своими типами везде, где подключите свой заголовочник с описанием этого типа.

не придумывайте проблему на пустом месте

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

Мой уютный бложик... заходите!


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Сб ноя 02, 2019 19:48:04 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1505
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15483
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Очень печалько, однако таки ФАКТ... (может касаемо только адуриньей IDE? :dont_know: )
Вышевыложенный тест (mino_1) и компилируется и макеткой отрабатывается...
А вот его собрат (все то же самое, кроме способа написания указателя на функцию):
Вложение:
mino_2.zip [8.58 KiB]
Скачиваний: 215

где указатель на функцию выведен через typedef в общем для всех заголовочнике
НИКАК компилироваться не желает...
Мозги уже зашипели...
Кстати там и с extern "разминка" сделана.
В чем разница - Х/З.... одначе весьма досадно...
:(

КСТАТИ...
Поле ошибок (красненьки строчки) ошибки типов указателей на функцию также выводит в "скобочном" варианте...
А там ведь GCC задействован...
:roll:


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Сб ноя 02, 2019 20:14:25 
Поставщик валерьянки для Кота

Карма: 20
Рейтинг сообщений: 256
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 2089
Рейтинг сообщения: 0
Typedef определяет новый тип, не переменную, а ты пытаешься типу присваивать указатели на функции...


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Вс ноя 03, 2019 06:01:00 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1505
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15483
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Верно... ПРОТУПИЛ...
"Скобчатая" форма сразу и определение переменной делает...
:oops:
Однако... таки некоторые заметки остались
(принято к сведению "как есть" ибо пока без особой надобности в уточнениях)
Вложение:
mino_3.zip [5.69 KiB]
Скачиваний: 247

:roll:


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Вс ноя 03, 2019 14:27:37 
Друг Кота

Карма: 38
Рейтинг сообщений: 623
Зарегистрирован: Пн апр 06, 2015 11:01:53
Сообщений: 3092
Откуда: москва, уфа
Рейтинг сообщения: 0
опять не-extern переменные в заголовочнике. Доколе?! :)))


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Пн ноя 04, 2019 09:39:57 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1505
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15483
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
А пока сам не разберусь какие могут быть extern, а какие НЕТ.
8)
Из всего, что пред глазы попадалось на ту тему - только треть
странички в книже Страутструпа (язык программирования С++ стр.34)...
Ежли учесть что проекты-многофайловики с перекрестным использованием
"общих" элементов не так часто попадаются в примерах...
Не слишком уж много...
А приличный многофайловик без знаний "границ кошерстности" для extern
нашкарябать весьма затруднительно.
:roll:


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Пн ноя 04, 2019 12:45:14 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 179
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3383
Рейтинг сообщения: 0
BOB51 писал(а):
А пока сам не разберусь какие могут быть extern, а какие НЕТ.
Это же элементарно. Если переменная объявлена без extern, она создается, т. е. под нее выделятся место в памяти. Если переменная объявлена с extern, это указывает компилятору что где-то в другом месте переменная объявлена без extern. Компилятор не выделяет память под переменную.
То есть в программе может быть только одна переменная с одним и тем же именем объявлена без extern (пространства имен и т. д. не считаем).
Прочитайте учебник по Си. В нем все написано.


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Пн ноя 04, 2019 15:18:13 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1505
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15483
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Мурик,
попытайтесь объявить extern переменную, тип которой
определяется ранее выполненным typedef.
Будет весьма интересно.
8)


Вернуться наверх
 
 Заголовок сообщения: Re: Котуинко
СообщениеДобавлено: Пн ноя 04, 2019 15:20:05 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2121
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18476
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
Чего тут пытаться?! Объявление переменной должно быть после typedef, и все будет пучком.

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

Мой уютный бложик... заходите!


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

Часовой пояс: UTC + 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