LINUX.ORG.RU

libmui — библиотека для интерфейсов в стиле MacOS Classic

 , , ,

libmui — библиотека для интерфейсов в стиле MacOS Classic

5

4

Привет, ЛОР!

Пару дней назад был опубликован код библиотеки libmui, которая позволяет создавать интерфейсы пользователя, напоминающие операционную систему MacOS Classic. API библиотеки также вдохновлён этой ОС.

Библиотека написана на языке C и отличается минимальным набором зависимостей. Поддерживается работа только в средах X11, поддержка Wayland автором не планируется.

Код опубликован под лицензией MIT.

>>> Подробности

★★★★★

Проверено: hobbit ()
Последнее исправление: CYB3R (всего исправлений: 3)

Ответ на: комментарий от cumvillain

Есть секта батхертеров.

Главное, не говорить им, что это буквально вызов alloca(), завёрнутый в синтаксис.

hateyoufeel ★★★★★
() автор топика
Ответ на: комментарий от hateyoufeel

Где-то я видел ссылку на то, что «в отличие от alloca(), VLA considered harmful» и объяснение на много букв. Но так как мне было лень читать, то так и остался непросвященным.

wandrien ★★
()
Ответ на: комментарий от wandrien

Ну там главная тема в том, что с alloca() ты можешь сделать вот такой трюк:

void f(size_t n) {
  void *ptr = n < TOO_BIG_FOR_STACK
            ? alloca(n)
            : malloc(n);
  
  ...

  if(n >= TOO_BIG_FOR_STACK)
    free(ptr);
}

Для маленьких кусков данных получишь прирост к скорости за счёт размещения на стеке, но при этом не просрёшь его, если данных много. С VLA такое не канает.

hateyoufeel ★★★★★
() автор топика
Последнее исправление: hateyoufeel (всего исправлений: 2)
Ответ на: комментарий от wandrien

На самом деле VLA расширяет систему типов, массив на стеке там побочное явление. Более того, то, что он на стеке, это вина разработчиков GCC.

cumvillain
()
Последнее исправление: cumvillain (всего исправлений: 2)
Ответ на: комментарий от wandrien

void baz(int a[printf(«Hello World\n»)]) {}

В данном примере каждый вызов функции baz будет сопровождаться выводом строки «Hello World\n».

Оооо… я прямо предвкушаю в Development вагоны отстреленных ног и очереди из разорванных жоп сишников, которые случайно вот это задействуют.

hateyoufeel ★★★★★
() автор топика
Ответ на: комментарий от hateyoufeel

Ага. Ну и как работает следующий код?

struct Some
{
  int a;
  char b[];
};

zx_gamer ★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.