
Ned Ogl
05.09.2017
09:22:43

Oleg
05.09.2017
09:22:53

Dmitry
05.09.2017
09:26:46
что ему не нравится то?

Google

Dmitry
05.09.2017
09:41:25
блин, импорт import std.algorithm приводи к этой ошибке. Даже тупо без вызова

Anatoly
05.09.2017
09:44:11
https://dlang.org/spec/betterc.html
As no Druntime is available, many D features won't work. For example:
Garbage Collection
Thread-local storage
TypeInfo and ModuleInfo
…
никакого TypeInfo

Dmitry
05.09.2017
09:46:10
А у где у меня тут TypeInfo?

Anatoly
05.09.2017
09:47:35
а как length реализован, хм? Это без включения алгоритмов?

Dmitry
05.09.2017
09:52:41
да, без алгоритмов length работает

Anatoly
05.09.2017
09:53:03
а без https://github.com/dlang/phobos/blob/master/std/container/array.d ?

Dmitry
05.09.2017
09:53:23
int [5] x = [1,2,3,4,5];
Я путаю или размерность указывается с нуля? т.е. должно быть int [4]?

Anatoly
05.09.2017
09:53:54
количество элементов
как в си

Dmitry
05.09.2017
09:55:36
а как в этом режиме напечатать значения массива на экран?

Anatoly
05.09.2017
09:58:37
цикл по размеру и да, %d

Google

Anatoly
05.09.2017
09:58:43
а не %i

Oleg
05.09.2017
10:01:38

Anatoly
05.09.2017
10:03:14
в общем, если дёргать length, то оно нявно пытаетс яимпортить array.d, а там дальш еиспользовать TypeInfo

Oleg
05.09.2017
10:03:27
да ладно?

Anatoly
05.09.2017
10:03:42
в режиме -betterC
хм, а теперь это не воспроизводится)

Oleg
05.09.2017
10:05:15
вот сейчас length в betterC сборке проверил и норм собирается

Anatoly
05.09.2017
10:05:23
так... это же динамический массив был
бред был именно с динамическим, да.
я неправильно распарсил prog.d:(.text.main[main]+0x15): undefined reference to _d_arrayliteralTX'

Oleg
05.09.2017
10:08:47
ничё не знаю, всё работает))

Anatoly
05.09.2017
10:08:56
https://wandbox.org/permlink/kExCv3WzqOGEAr4o

Oleg
05.09.2017
10:09:06
auto x = (cast(int*)malloc(int.sizeof * 10))[0..10];
printf("%d\n", x.length);
free(x.ptr);

Anatoly
05.09.2017
10:09:18
а, ну да)

Oleg
05.09.2017
10:11:30
тут недавно ссылку постили по этому поводу
там типа tips по D и как раз был этот момент
литерал массива использует GC
и как-то это хитро можно обойти
или нет)
не помню)

Google

Anatoly
05.09.2017
10:15:13
блин, scope(exit) free(x.ptr); не втыкается
prog.o:(.data.DW.ref.__dmd_personality_v0+0x0): undefined reference to `__dmd_personality_v0'
даже гуглится

Oleg
05.09.2017
10:18:35
да?

Anatoly
05.09.2017
10:18:41
https://theartofmachinery.com/2016/12/18/d_without_runtime.html

Oleg
05.09.2017
10:19:01
думал это связанные сообщения
блин, scope(exit) free(x.ptr); не втыкается
prog.o:(.data.DW.ref.__dmd_personality_v0+0x0): undefined reference to `__dmd_personality_v0'
даже гуглится

Anatoly
05.09.2017
10:22:09
objcopy -R .data.DW.ref.__dmd_personality_v0 -R .eh_frame obj.o ... мде
тут без makefile не обойтись
из dub такие штуки можно вызывать для генерируемых объектников?)

Oleg
05.09.2017
10:23:55

Anatoly
05.09.2017
10:24:50
Хм...

Oleg
05.09.2017
10:26:17
dmd --version
DMD64 D Compiler v2.076.0-dirty
срезы тоже работают
в целом юзабельно +/-
вот когда завезут в ldc2 так вообще круто будет
тк как кросскомпиляция и можно норм под железо писать
ну не прям под железо, но хотябы без рантайма, если нужно будет
хотя может быть и прям под железо...

Maxim
05.09.2017
10:32:34
вообще, штука интересная, жаль только классы (а значит и наследование, и интерфейсы) отваливаются)

Google

Andrey
05.09.2017
10:33:44
а какую можно опцию дать dmd (ldc2) чтобы ddoc генерился не по разным файлам, а в один?

Anatoly
05.09.2017
10:37:31

Oleg
05.09.2017
10:39:03

Maxim
05.09.2017
10:39:23

Anatoly
05.09.2017
10:39:50

Oleg
05.09.2017
10:40:11

Maxim
05.09.2017
10:40:15
ну тогда и CTFE выпиливать надо, да?

Anatoly
05.09.2017
10:40:48
я к тому, что и со структурками прожить можно
наследование... а разве магия со структурками не работает через всякие alias this;

Admin
ERROR: S client not available

Maxim
05.09.2017
10:41:43
пожить и без них можно, все дело в качестве жизни)

Oleg
05.09.2017
10:42:17
не вижу ни одной причины чтобы нужен был рантайм для того чтобы main возвращала int

Anatoly
05.09.2017
10:43:02

Dmitry
05.09.2017
10:43:05
А как работает ref ? понятно дело что это ссылка, но получается это какая-то обертка над указателями видимо?

Oleg
05.09.2017
10:43:58

Dmitry
05.09.2017
10:44:26
а где почитать как оно устроено?

Oleg
05.09.2017
10:44:36
а зачем?)))))

Google

Anatoly
05.09.2017
10:44:44

Dmitry
05.09.2017
11:07:18
просто вот:
int [] x = [1,2,3,4,5];
foreach(ref i; x) { ... }
Мне не очевидно почему ref мы ставим перед i а не перед x. Вроде бы по ссылке именно x перебираем

Maxim
05.09.2017
11:09:24
потому что i должно быть ссылкой на элемент массива x
т.е. на каждой итерации цикла каждый последующий элемент массива и переменная i должны находиться в одной ячейке памяти
по сути, ref и не ref — это просто соглашения о поведении, реализовать их можно разными способами
ref говорит о том, что при изменении ref переменной будет изменена и переменная, на которую та указывает

Oleg
05.09.2017
11:26:41
Это важно

Pavel
05.09.2017
11:27:21
А чем отличается от поинтера тогда?
Где то я мельком видел что ref это указатель на указатель

Maxim
05.09.2017
11:27:42

Pavel
05.09.2017
11:27:59
Короче опасная непонятная штука )

Maxim
05.09.2017
11:28:30

Dmitry
05.09.2017
11:31:41
я делаю для сайта пример проверки вхождения в массив.
https://repl.it/Khfp/0
Функцию нашел в инете. Помогите блин это скомпилировать.
пример массива:
int [] x = [1,2,3,4,5];

Pavel
05.09.2017
11:40:05
По крайней мере в структуре я это использовал свободно.

Maxim
05.09.2017
11:40:50
требует же

Oleg
05.09.2017
11:51:17

NullSanya
05.09.2017
11:56:37
не, вроде точка для указателя равна -> из плюсов

Pavel
05.09.2017
11:58:26
https://wandbox.org/permlink/FeyO4G96VvRcrJG5 да, скаляры надо разыменовывать, структуры не надо

Anatoly
05.09.2017
12:26:59