
LexsZero
22.05.2017
17:56:15
конст в аргументах это просто некоторая гарантия, что сама функция не будет в этот буфер срать
ну и метаинфа для программиста

Влад
22.05.2017
17:56:37
если я сделаю uint8_t *buf, то надо будет потом память еще выделить под него?

LexsZero
22.05.2017
17:56:48
да

Google

LexsZero
22.05.2017
17:57:15
можно на стеке буфер сделать

Влад
22.05.2017
17:57:42
а если сделать uint8_t buf[224], то я смогу его в такую функцию передать, просто взяв на него указатель?

Dolphin
22.05.2017
17:58:27
канеш

Влад
22.05.2017
17:58:56
uint8_t flash_write_buffer[224];
for (int i = 0; i < 224; i++)
{
flash_write_buffer[i] = data[i+4];
}
ext_flash_open();
ext_flash_write(fw_ext_flash_address, 224, &flash_write_buffer);
../dag_node.c:265:53: warning: passing argument 3 of 'ext_flash_write' from incompatible pointer type [-Wincompatible-pointer-types]
ext_flash_write(fw_ext_flash_address, 224, &flash_write_buffer);
^
In file included from ../../platform/unwired/udboards/board-peripherals.h:48:0,
from ../dag_node.c:61:
../../platform/unwired/common/ext-flash.h:92:6: note: expected 'const uint8_t * {aka const unsigned char *}' but argument is of type 'uint8_t (*)[224] {aka unsigned char (*)[224]}'
bool ext_flash_write(size_t offset, size_t length, const uint8_t *buf);
^~~~~~~~~~~~~~~
ругается-с

Dolphin
22.05.2017
17:59:33
приведение типов при передаче
посмотри внимательно на Лекса пример

Влад
22.05.2017
18:00:20
ext_flash_write(fw_ext_flash_address, 224, (const uint8_t *)&flash_write_buffer);

LexsZero
22.05.2017
18:00:23
не, у меня там приведение к передаче никакого отношения не имеет

Влад
22.05.2017
18:00:37
там же просто строка

LexsZero
22.05.2017
18:00:45
убери &

Влад
22.05.2017
18:01:29
а, ага.

Google

Влад
22.05.2017
18:01:39
а это можно как-то более красиво сделать?
меня бесит эта двоякая ситуация с массивами и указателями

LexsZero
22.05.2017
18:02:11
всмысле?
массивы - это синтаксический сахар для pointer arithmetics

Dolphin
22.05.2017
18:02:34

Влад
22.05.2017
18:02:42
ну, функция требует указатель, да еще и const, а я передаю ей созданный массив
смысл я понимаю
мне не нравится, как код выглядит)

LexsZero
22.05.2017
18:03:07
a[5] это то же самое что *(a + 5)

Dolphin
22.05.2017
18:03:20
конст в аргументах это просто некоторая гарантия, что сама функция не будет в этот буфер срать
?

LexsZero
22.05.2017
18:03:28
тебе не нравится что в объявлении звездочки нет?

Влад
22.05.2017
18:03:45
я боюсь потом сам запутаться

LexsZero
22.05.2017
18:04:01
// и даже можно в некоторых случаях писать 5[a], гг

Alexandre
22.05.2017
18:04:42

LexsZero
22.05.2017
18:06:37
хз в чем тут путаться. массив - это кусок данных одного типа лежащих подряд начиная с какого-то адреса. переменная объявленная как массив есть указатель на этот адрес.

Dolphin
22.05.2017
18:08:10

Alexandre
22.05.2017
18:08:16
Я Влада понимаю, кстати, но перестал путаться, осознав распределение памяти уже давно

Google

Alexandre
22.05.2017
18:08:44
В жизни нахер не нужна

Dolphin
22.05.2017
18:08:46
помогают задачи на указатели
типа многосвязных списков и тп

LexsZero
22.05.2017
18:09:25

Alexandre
22.05.2017
18:09:33

Dolphin
22.05.2017
18:10:01
можно проще

Alexandre
22.05.2017
18:10:07
Лоу-левел, все абстракции пишешь сам

Dolphin
22.05.2017
18:10:16
сортировка многосвязного списка
с менеджментом элементов

Alexandre
22.05.2017
18:10:49

LexsZero
22.05.2017
18:10:58
я тут вчера допилил некоторую странную хуйню

Alexandre
22.05.2017
18:11:16

LexsZero
22.05.2017
18:11:20
https://github.com/contactless/u-boot/blob/dev/wb_v2017.03-fwupdate/cmd/ximg.c#L292-L641

Dolphin
22.05.2017
18:11:21

Alexandre
22.05.2017
18:11:40

Dolphin
22.05.2017
18:11:59

Alexandre
22.05.2017
18:12:12

LexsZero
22.05.2017
18:12:36
закат солнца вручную, парсинг хитровыебанного (на самом деле нет) файла который не влазит в память, а чтение с флешки работает со скоростью 95 кб/с
и mmap'а нет.

Google

Dolphin
22.05.2017
18:13:32

LexsZero
22.05.2017
18:13:33
засабмитил, может в апстрим возьмут.

Dolphin
22.05.2017
18:14:26
Хорошо, что продукция была - вино-водочные

Stanislav
22.05.2017
18:14:34
> if (ret >= 0)
break;
эксепшены.тхт

Dolphin
22.05.2017
18:15:19

Stanislav
22.05.2017
18:15:48
да вчера раст обсуждали прост

Alexandre
22.05.2017
18:15:55

Dolphin
22.05.2017
18:16:07

Stanislav
22.05.2017
18:16:09
я бугуртил что на одну строку сишки 10 строк эррор чекинга

Admin
ERROR: S client not available

Stanislav
22.05.2017
18:16:18
таки начал экспанс ?

LexsZero
22.05.2017
18:16:41
я там даже ни разу не заюзал goto, зато есть функция высшего порядка

Alexandre
22.05.2017
18:18:39

LexsZero
22.05.2017
18:18:42

Alexandre
22.05.2017
18:19:58

Dolphin
22.05.2017
18:20:41

LexsZero
22.05.2017
18:20:44
ну это скорее абьюзинг либфдт которая вообще-то предназначена для работы с фдт полностью лежащим в памяти (ну или хотя бы ммапнутым)

Dolphin
22.05.2017
18:22:03
@LexsZero м?

LexsZero
22.05.2017
18:22:18

Dolphin
22.05.2017
18:22:31
грамматику

Google

LexsZero
22.05.2017
18:22:46
парсинг, штоле

Dolphin
22.05.2017
18:22:52
аха

LexsZero
22.05.2017
18:23:20
ну, писал пару парсеров на бизоне и парсеке

Dolphin
22.05.2017
18:24:03
ну я и спрашиваю - с грамматикой, или - наугад? :)

LexsZero
22.05.2017
18:24:21
не сказать что охуеть как умею, но что такое BNF и нахуй оно надо я представляю
наугад тоже писал, даже на гитхабе лежит это поделие

Dolphin
22.05.2017
18:24:59
ок, просто интересно )

LexsZero
22.05.2017
18:25:13
https://github.com/lexszero/jitsynth вот это

Dolphin
22.05.2017
18:26:00
хы, прикольно
кто заказчик? )

LexsZero
22.05.2017
18:26:18
j4f писал, хотел с JIT поиграться
https://github.com/lexszero/jitsynth/blob/master/function.c#L55-L138 вот ядро, парсим и сразу же генерим код для JIT
// на самом деле работало все это крайне плохо, жрало проц как не в себя и я забил это допиливать и отлаживать.

Dolphin
22.05.2017
18:30:41
почему-то на паскале работало хорошо, а на си всегда с реккурсией тормоза

LexsZero
22.05.2017
18:30:48
т.к. нормальный парсер я ниасилил, код приходилось писать в прямой польской нотации, лол

Dolphin
22.05.2017
18:31:08
я заметил по грамматике )

LexsZero
22.05.2017
18:31:08
там тормоза не в парсинге, а в исполнении наджитенного кода
и еще там где-то память текла поэтому сначало все работает а потом начинает заикаться

Dolphin
22.05.2017
18:32:38
я мало парсил, а сейчас вот задачи проскакивают, и не знаю, то ли вспоминать и писать правильно, то ли делать как попало :D

LexsZero
22.05.2017
18:32:57
когда мне в следующий раз захочется что-то попарсить, я возьму хаскель
а для бытовых задач регэкспов хватает

Dolphin
22.05.2017
18:33:35

Maxim
22.05.2017
18:34:17