-
- Если вызовы из "разных мест", при этом вызовы могут "рвать" выполнение функции - жди неприятности. Это как объявить обычную переменную и обращаться к ней с прерывания и основной программы. - BlackMorda(22.04.2024 21:36)
- Далеко до понятия регалий, цвета штанов и опоясывающего кушака...
Объявляя прототип единой функции в хедере и подключая его в нуждах
потребности ея вызова, живем. Другое дело, когда мы передаём в
функцию аргументы. Массивы ли с трёхмерными индексами и пр. Тогда
компилятор скажет - дай мне мемори аллокейшн... malloc - bnb62(21.04.2024 14:18)
- В таком случае, если это чистый Си, лучше объединять аргументы в
структуру. В неё же включать статические переменные, необходимые
для обработки экземпляра данных. И передавать функции лишь один
указатель на эту структуру. Nikolay_Po(238 знак., 21.04.2024 19:23)
- Ну как же не "в куче" если уже затеяно динамическое отведение
перспективы памяти, хороший инструмент предполагает, и осиливает
хотелки рукокропателя, а иные мы зачем-то сами думаем за него на
ассемблере ресурсов. В том и проблема. :) - bnb62(21.04.2024 20:47)
- Кроме кучи еще бывает стек. Да и не всегда нужно именно динамическое. - Cкpипaч(21.04.2024 21:05)
- Ну как же не "в куче" если уже затеяно динамическое отведение
перспективы памяти, хороший инструмент предполагает, и осиливает
хотелки рукокропателя, а иные мы зачем-то сами думаем за него на
ассемблере ресурсов. В том и проблема. :) - bnb62(21.04.2024 20:47)
- В таком случае, если это чистый Си, лучше объединять аргументы в
структуру. В неё же включать статические переменные, необходимые
для обработки экземпляра данных. И передавать функции лишь один
указатель на эту структуру. Nikolay_Po(238 знак., 21.04.2024 19:23)
- Нет. И я активно это в своем коде использую. - Cкpипaч(20.04.2024 17:34)
- По поводу "в другом месте" ещё незабвенный Виктор Степанович
говорил. Дескать, чешите в другом месте. Как вы вообще вычисляете,
какое место другое, а какое нет? Я в недоумении. - SciFi(20.04.2024 16:29)
- У меня пояса ваще нет. Но в обсуждении прозвучало мнение, решил
здесь уточнить. ХЗ, вдруг компилер такой умный, что создаёт
структуру с переменными для каждого отдельного вызова и передаёт
указатель на них? В нашэ время никому верить низзя. - mse homjak(20.04.2024 16:57)
- Пардон за смелое предложение, но спеку на язык Си читать не
пробовали? - SciFi(20.04.2024 16:59)
- Откуда, когда возник жаргонный термин "спека" из понятия
Спецификация в постоянном обиходе инженеров? Ну, меня бесит... Да
ладно, я педант... Недавно прямо так и составлен квартальный Отчёт
сотрудницы... Она так и написала - "спека, в спеке". Смешно было
бы... Но плакала. - bnb62(21.04.2024 15:25)
- Слишком длинно же. Хуже только "коммерческое предложения" (заменяем
КП) и "Техническое задание" (заменяем ТЗ). Мой совет - придумайте
двух словный синоним и заменяйте на аббревиатуру. - Cкpипaч(21.04.2024 17:36)
- Но ТЗ и КП не заменяются в речевом протоколе на произносимые,
впрочем, вру, именно так и произносятся кэпэ и тэзэ, но в
неотъемлемом контексте сущи предмета. А здесь же - "спека".
уменьшительно-ласкательное... Возникло на постсоветском, на
"пелевинском ню". - bnb62(21.04.2024 18:33)
- Угу. Можно сказать эспэ (спецификация параметров) - Cкpипaч(21.04.2024 18:34)
- Но ТЗ и КП не заменяются в речевом протоколе на произносимые,
впрочем, вру, именно так и произносятся кэпэ и тэзэ, но в
неотъемлемом контексте сущи предмета. А здесь же - "спека".
уменьшительно-ласкательное... Возникло на постсоветском, на
"пелевинском ню". - bnb62(21.04.2024 18:33)
- Слишком длинно же. Хуже только "коммерческое предложения" (заменяем
КП) и "Техническое задание" (заменяем ТЗ). Мой совет - придумайте
двух словный синоним и заменяйте на аббревиатуру. - Cкpипaч(21.04.2024 17:36)
- Угадайте с трёх раз. - mse homjak(20.04.2024 17:01)
- Откуда, когда возник жаргонный термин "спека" из понятия
Спецификация в постоянном обиходе инженеров? Ну, меня бесит... Да
ладно, я педант... Недавно прямо так и составлен квартальный Отчёт
сотрудницы... Она так и написала - "спека, в спеке". Смешно было
бы... Но плакала. - bnb62(21.04.2024 15:25)
- Пардон за смелое предложение, но спеку на язык Си читать не
пробовали? - SciFi(20.04.2024 16:59)
- У меня пояса ваще нет. Но в обсуждении прозвучало мнение, решил
здесь уточнить. ХЗ, вдруг компилер такой умный, что создаёт
структуру с переменными для каждого отдельного вызова и передаёт
указатель на них? В нашэ время никому верить низзя. - mse homjak(20.04.2024 16:57)
- Серенький пояс подсказывает, что - нет.. Это ж как глобальная
переменная, только область видимости - в функции. - POV(20.04.2024 16:20)
- Ну и я так думал. Но прозвучало другое мнение, решил уточнить. - mse homjak(20.04.2024 16:58)
- В целом правильно. Но есть нюанс, который позволяет существовать и
другому мнению. Вот SciFi и стебется в своей манере :-) Если кратко
- количество экземпляров статической переменной будет строго равно
количеству экземпляров функции. Ну а далее - вам видней, сколько у
вас этих функций :-) - il-2(21.04.2024 08:40)
- Вы знаете способ создать более одного экземпляра функции? Cкpипaч(134 знак., 21.04.2024 10:45)
- -> il-2(1 знак., 21.04.2024 12:23, ссылка)
- А кто ему помешает заинлайнить? Видимость переменной, это только шкрябочка в мосхе линкера. - mse homjak(21.04.2024 11:24)
- Определение функции поместить в хедер. Функция статическая. Вот и
будут одноименные функции в разных сишных модулях, включающих этот
хедер. - SciFi(21.04.2024 11:23)
- Можно попробовать на макросах накрутить "манглинг", чтобы на каждый вызов создавался свой экземпляр функции. - LightElf(21.04.2024 11:47)
- Проблема не в одинаковых функциях. mse homjak(259 знак., 21.04.2024 11:39)
- Контекст нужно указывать в явной форме. Можно хранить "снаружи" и
передавать указатель, можно внутри и передавать индекс. Cкpипaч(62 знак., 21.04.2024 12:00)
- Как сделать закат солнца вручную, вполне понятно. Хочеца
непонятного: то-ли севрюжины с хреном, то-ли зарезать кого-нибудь. - mse homjak(21.04.2024 13:25)
- Не советую. Сделай лучше шашлыки с красным вином :) Cкpипaч(29 знак., 21.04.2024 13:39)
- +1. Несколько экземпляров функций принято делать, если они отличаются кодом или типом параметров. Например в графических либах такое делают. В том же OpenGL тысяча почти одинаковых функций, пишут одну с кучей #ifdef, а потом её тысячу раз вставляют, обложив разными #define - LightElf(21.04.2024 12:07)
- Как сделать закат солнца вручную, вполне понятно. Хочеца
непонятного: то-ли севрюжины с хреном, то-ли зарезать кого-нибудь. - mse homjak(21.04.2024 13:25)
- Контекст нужно указывать в явной форме. Можно хранить "снаружи" и
передавать указатель, можно внутри и передавать индекс. Cкpипaч(62 знак., 21.04.2024 12:00)
- Как элегантно! Вы правы. - Cкpипaч(21.04.2024 11:29)
- Я стебусь по поводу "другого места". Вот честно не могу понять, как
мсье хомяк вычисляет, какое место другое, а какое нет. - SciFi(21.04.2024 10:22)
- Ну, я-ж примерный механизьм описал: при количестве вызовов больше
одного, компилер создаёт двумерный массив, где первый индекс, номер
вызова, а второй, индекс для доступа к статической переменной, если
больше одной. И заход в каждый вызов происходит прозрачно для
пользователя. Не будет-жэ он лезть в ассемблер. mse homjak(136 знак., 21.04.2024 11:22)
- Это в матлабе так, любое число матрицей считается, поэтому и тормозит дико. В маткаде как то проще, но фильтр с IIR только в 2001i смоделировать смог, 2014 и прочие от двойной сигмы в ступор впадают. - Visitor(21.04.2024 11:53)
- Такого идиотизма точно нет. - Cкpипaч(21.04.2024 11:36)
- Догадываюсь. - mse homjak(21.04.2024 11:40)
- Ну, я-ж примерный механизьм описал: при количестве вызовов больше
одного, компилер создаёт двумерный массив, где первый индекс, номер
вызова, а второй, индекс для доступа к статической переменной, если
больше одной. И заход в каждый вызов происходит прозрачно для
пользователя. Не будет-жэ он лезть в ассемблер. mse homjak(136 знак., 21.04.2024 11:22)
- Вы знаете способ создать более одного экземпляра функции? Cкpипaч(134 знак., 21.04.2024 10:45)
- В целом правильно. Но есть нюанс, который позволяет существовать и
другому мнению. Вот SciFi и стебется в своей манере :-) Если кратко
- количество экземпляров статической переменной будет строго равно
количеству экземпляров функции. Ну а далее - вам видней, сколько у
вас этих функций :-) - il-2(21.04.2024 08:40)
- Ну и я так думал. Но прозвучало другое мнение, решил уточнить. - mse homjak(20.04.2024 16:58)