169 похожих чатов

Парни, а есть бэк на Си?

37 ответов

51 просмотр

да

nikita css-ㅤ Автор вопроса
NonProgger
да

на нем норм бэк или как у линуксяши с плюсами, где костыль на костыле?

supabase

Бэк? Может быть ты имел в виду Бэг? Ну, структура данных такая... Или бык? Самец коровы? Бэк это спина, "парни, а есть спина на Си?" - не имеет смысла...

Стикер

λ🇦🇲
полагаю, что бек - сокращение бекенд

Конец спины? То есть жопа? "Есть жопа на С? " - подходит! Есть жопа, почти весь язык одна сплошная жопа! Массив передать в функции нельзя, из функции вернуть массив тоже нельзя, локальных функций нет, printf параметры не проверяет, да и вообще одно сплошное UB вокруг!

На любом языке можно сделать бэк

Видел на асм даже

Ilya Zviagin
Конец спины? То есть жопа? "Есть жопа на С? " -...

1. Льзя (через указатель + размер/количество элементов) 2. Льзя (выделить из кучи и вернуть указатель) 3. Нормальные компиляторы проверяют вызов printf 4. Нам платят за избегание UB. Нормальный язык.

Влад Каверов
1. Льзя (через указатель + размер/количество элеме...

нельзя нельзя САМА ФУНКЦИЯ не проверяет аааа, нууу! Вывод: Плохо знаешь язык!

Ilya Zviagin
Конец спины? То есть жопа? "Есть жопа на С? " -...

Так, си - это жопа, значит си++ это жопа и два кочегара. Массив передать в функции можно. Из функции тоже массив вернуть можно. Локальные функции для файла есть, локальные функции для скоупа других функций есть в расширениях. Любой уважающий себя компилятор проверяет параметры принтфа. А уб и в плюсах есть, выходит, плюсы это одно уб чуть поменьше, вложенное в другое уб побольше.

xchg rax, rax Rabbit
Так, си - это жопа, значит си++ это жопа и два коч...

Ну что вы как маленькие нельзя передать массив функцию можно передать указатель на массив это не одно и то же

Ilya Zviagin
Ну что вы как маленькие нельзя передать массив фун...

struct array { uint8_t values[32]; }; void func(struct array arg) { for (size_t i = 0; i < sizeof(arg); i++) { uint8_t byte = arg.values[i]; ... } }

Влад Каверов
struct array { uint8_t values[32]; }; void func...

Костылем попахивает. Хотя, можно ввести еще поле структуры, где содержится размер массива, что бы каждый итератор не вычислять этот размер. Ну и данные в массиве не испортятся.

Ilya Zviagin
Ну что вы как маленькие нельзя передать массив фун...

Ооо, ну это ты зря, помнишь ведь, что такое массив? Верно, структура данных, обладающая тремя инвариантами - линейное целочисленное индексирование в заданном диапазоне по элементам определённого типа. А теперь думаем, чего же не хватает указателю - именно, интерфейса для проверки диапазона, а также размера. Смекаешь? Так можно ли передавать массив в функцию?)) P.S. вариант выше, к сожалению, не жизнеспособен, т.к. для каждого массива определённого типа и определённой длины требуется собственная структурка.

Sam
Костылем попахивает. Хотя, можно ввести еще поле с...

Just4lulz же. А вот struct buffer_t { uint8_t *array; size_t length; size_t capacity; }; у меня крутится в проде.

Влад Каверов
Just4lulz же. А вот struct buffer_t { uint8_t *a...

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

Ilya Zviagin
Это структура , не массив

Но "физически"-то массив передан в функцию. %)

Влад Каверов
Но "физически"-то массив передан в функцию. %)

вы чё там все такие умные, а чего тогда строем не ходите ? Я вам ПРО ЯЗЫК говорю, а не про уловки как его использовать. ВСЕ параметры в функции в С передаются ТОЛЬКО ПО ЗНАЧЕНИЮ. И возвращаются из функции в виде значения функции только по значению. Кроме массивов, которые ни передать в функцию, ни вернуть невозможно.

Ilya Zviagin
вы чё там все такие умные, а чего тогда строем не ...

Вот только встречный вопрос - а на кой нужна возможность передачи массива по значению?

Влад Каверов
Вот только встречный вопрос - а на кой нужна возмо...

чтобы передавать массив в функцию и не объяснять глупым студентам ЧТО ТАК ДЕЛАТЬ НЕЛЬЗЯ

Влад Каверов
Вот только встречный вопрос - а на кой нужна возмо...

Вообще, какая проблема передать массив по значению ? И вернуть ? СТРУКТУРУ с массивом - можно. А сам массив - нельзя. Ну чё за бред ?

Ilya Zviagin
Вообще, какая проблема передать массив по значению...

Ну ты же бред пишешь! Какая проблема? Ну наверное проблема в том, что никто не хочет копипастить тонну данных только ради того, чтобы передать их в функцию. Это было ещё в 72 году очевидной. Если вопрос в том, почему нельзя было сохранять инвариант размера при передаче в функцию, то дело всего лишь в унификации, т.к. гораздо удобнее написать функцию, которая работает с любым массивом, а не с массивом конкретной длины, к тому же, даже если такое может понадобиться, в си есть квалификатор статик для размера массива, который будет следить за корректность передаваемого массива в функцию (>=).

Ilya Zviagin
Вообще, какая проблема передать массив по значению...

Осталось, завести шарманку про рестрикт и план на день выполнен.

xchg rax, rax Rabbit
32 * sizeof(int)

У меня там uint8_t. Так что 32 байта.

Похожие вопросы

Обсуждают сегодня

а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
TCodePointer = record cp: CodePointer; name: string; cnt: Integer; next: TCodePointerArray; // этот тип ещё неизвестен end; TCodePointerArray = array of ...
notme
9
Привет ) есть такой кусок кода, он считывает ini файл. my $conf = Config::IniFiles->new( -file => $ini_file ); if (!$conf) { $self->my_die('cannot_read_cfg', ...
Kolya lastname
7
Добрый день. Хочу сделать отрисовку по команде на панели. Почему-то рисуется только при втором вызове. С чем может быть связано, не подскажете? procedure TForm1.FormDblClick(...
Kirill Filippenok
20
Всем привет! Подскажите. Я написал приложение на Delphi 10.2 Tokyo под Windows 10. И передо мной стал вопрос о том чтобы сделать это приложение кроссплатформенным (под Linux и...
Дмитрий Завгородний
24
Блин, интересно, кто-нибудь когда-нибудь переписывал какую-нибудь игру с x86 на arm? Вообще, такое возможно?
Alan 🔝 Бэброу
13
здравствуйте, братья, кто-нибудь знает, как работать с Swift.com или Swift.net?
Ozzy
6
why html and css is not standard? i mean why different browser has their own engine and styles and how them work to show result to end user?
Mr Thieves
5
Ну тогда у меня вопрос... ) А вот в Delphi 7, к примеру, это что не решаемая задача была бы? (дженериков то ещё нету) Эта: https://t.me/Delphi_Lazarus/319568
notme
5
@wit01d How are you? What are you studying these days, curious man ?
Sahand 🏔️
6
Карта сайта