beldmit: (Программизм)
Dmitry Belyavskiy ([personal profile] beldmit) wrote2011-09-24 05:47 pm

Я отстал от жизни?

Вижу у [livejournal.com profile] colobuska (ВМК, третий курс) в коде программы на C++ конструкцию

int func(int arg)
{
...
float matrix[arg][arg]
...
}

Что, так уже можно? Без геморроя с malloc/new/free/delete?

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

[identity profile] shvedka.livejournal.com 2011-09-24 02:04 pm (UTC)(link)
Это ты как-то крепко от жизни отстал, у Страуструпа такая конструкция описана, причем во втором издании как минимум...

[identity profile] beldmit.livejournal.com 2011-09-24 02:09 pm (UTC)(link)
Ну может быть. Кажется, я как-то наступил на грабли, что gcc 2.95 с теми опциями, которые в проекте были, аналогичную конструкцию не сожрал.

[identity profile] shvedka.livejournal.com 2011-09-24 02:15 pm (UTC)(link)
А, подожди. В те прекрасные времена она только с константным размером работала, да. Это я не подумамши ляпнула :))
ext_659502: (Default)

[identity profile] some41.livejournal.com 2011-09-24 04:16 pm (UTC)(link)
у Страуструпа такая конструкция не описана ни где, потому что это не С++.
по теме -- официально в С так можно с С99, в С++ нельзя. до этого можно было делать alloca (с разницей что VLA освобождается в конце блока, а alloca в конце функции). поскольку это все выделяется на стеке, для двухмерных массивов флотов это может оказаться не лучший выбор.

[identity profile] beldmit.livejournal.com 2011-09-25 07:05 am (UTC)(link)
Угу. Судя по тому, что внутри Qt Creator живет MInGW, именно оно.
arilou: (Default)

[personal profile] arilou 2011-09-24 02:34 pm (UTC)(link)
Давно было можно. Когда я активно кодил RMUD (2003-2005), я это обнаружил и использовал.

Только исключения ловить не забывайте...

[identity profile] qkowlew.livejournal.com 2011-09-24 04:00 pm (UTC)(link)
А то блин куда пойдёт оно если alloc не прошёл...
ext_659502: (Default)

Re: Только исключения ловить не забывайте...

[identity profile] some41.livejournal.com 2011-09-24 04:17 pm (UTC)(link)
какие исключения в С?
ext_605364: geg MOPO4 (Default)

[identity profile] gegmopo4.livejournal.com 2011-09-24 05:15 pm (UTC)(link)
Не страшно? А вдруг на C++ переходить вздумаете?
ext_605364: geg MOPO4 (Default)

[identity profile] gegmopo4.livejournal.com 2011-09-24 05:19 pm (UTC)(link)
Кстати, в C++ это нестандартное поведение мало того, что непортабельно, так ещё и чревато глюками при взаимодействии с другими средствами.

[identity profile] slobin.livejournal.com 2011-09-24 11:28 pm (UTC)(link)
Почитал комменты. Осознал, что надо наконец изучить C99.

P.S. А C++ не надо, тут моё мнение не изменилось. ;-)

... Эч ба мЕ? Элтай ба сэтай? ...

[identity profile] beldmit.livejournal.com 2011-09-25 07:06 am (UTC)(link)
Зря, C++ последнего извода куда прикольнее.