amarao: (Default)
[personal profile] amarao
Если кто-то себя чувствует системным программистом, и думает, что много знает, просто откройте сырцы glibc, и почитайте в районе elf/rtld.c и связанных с ними файлами.

Сразу пройдёт.

А чо, так можно?

Date: 2023-05-30 08:01 pm (UTC)
archie_kot: (Default)
From: [personal profile] archie_kot
struct rtld_global _rtld_global =
  {
    /* Get architecture specific initializer.  */
#include <dl-procruntime.c>
    /* Generally the default presumption without further information is an
     * executable stack but this is not true for all platforms.  */
    ._dl_stack_flags = DEFAULT_STACK_PERMS,
#ifdef _LIBC_REENTRANT
    ._dl_load_lock = _RTLD_LOCK_RECURSIVE_INITIALIZER,
    ._dl_load_write_lock = _RTLD_LOCK_RECURSIVE_INITIALIZER,
    ._dl_load_tls_lock = _RTLD_LOCK_RECURSIVE_INITIALIZER,
#endif
    ._dl_nns = 1,
    ._dl_ns =
    {
#ifdef _LIBC_REENTRANT
      [LM_ID_BASE] = { ._ns_unique_sym_table
		       = { .lock = _RTLD_LOCK_RECURSIVE_INITIALIZER } }
#endif
    }
  };


Такая инициализация полей структуры - это круто.
А вот выделенный кусок я ваще не понял. [LM_ID_BASE] = {...} - это как ваще??
Ну прикольно. Я смотрю синтаксис Си тоже на месте не стоит.
Но на С++ получилось бы короче и понятнее

Re: А чо, так можно?

Date: 2023-05-31 04:34 am (UTC)
From: [personal profile] awkravchuk
Это значит, что в массиве, который лежит в поле _dl_ns, нужно всё забить нулями, а один элемент с индексом LM_ID_BASE проинициализировать структурой, которая там указана далее (поле _ns_unique_sym_table и т.д.)

Этому синтаксису так-то 24 года)))

Re: А чо, так можно?

Date: 2023-05-31 08:00 am (UTC)
archie_kot: (Default)
From: [personal profile] archie_kot
Ну прикольно. Век живи век учись. Как-то я пропустил С99. Но я С почти не пользуюсь, а в С++ такого, похоже, нету. По крайней мере MSVC точно не понимает.

Re: А чо, так можно?

Date: 2023-05-31 09:34 am (UTC)
From: [personal profile] awkravchuk
Тот факт, что компилятор от мокросовт научился поддерживать стандарт C11 в 2019 году, лишний раз доказывает, что M$FT — это раковая опухоль IT-индустрии.

Re: А чо, так можно?

Date: 2023-05-31 10:10 am (UTC)
archie_kot: (Default)
From: [personal profile] archie_kot
Да ладно? Если мне склероз не измнеяет мы еще в 2015 писали на С++14 и все он прекрасно понимал
Ну и если есть чо заместо MSVS такое же удобное но не MS - буду очень признателен за подсказку

Re: А чо, так можно?

Date: 2023-06-01 08:25 am (UTC)
From: [personal profile] awkravchuk

Если мне склероз не измнеяет мы еще в 2015 писали на С++14 и все он прекрасно понимал

Мы вообще-то C обсуждали. Я ошибся, поддержка последнего стандарта там даже не в 19 году появилась, а в 20-м, буквально недавно: https://devblogs.microsoft.com/cppblog/c11-and-c17-standard-support-arriving-in-msvc/

Ну и если есть чо заместо MSVS такое же удобное но не MS - буду очень признателен за подсказку

GNU Emacs, рачительно настроенный в каждой мелочи под себя, свои пальцы и свой attention span. Я в нём уже больше пяти лет пишу вообще весь код, и чувствую себя, как в утробе матери. Времена, когда я в начале 10-х использовал по нужде MSVS, вспоминаю с содроганием.

Re: А чо, так можно?

Date: 2023-06-01 01:28 pm (UTC)
archie_kot: (Default)
From: [personal profile] archie_kot
Мы вообще-то C обсуждали

Извиняюсь, недопонял

GNU Emacs

Intellisense там есть?
Edited Date: 2023-06-01 01:28 pm (UTC)

Re: А чо, так можно?

Date: 2023-06-01 02:14 pm (UTC)
archie_kot: (Default)
From: [personal profile] archie_kot
Intellisense, это кобольная версия language server'а?

не знаю что такое "кобольная версия language server'а", но это когда ты пишешь ptr->get - а оно тебе подсказывает все методы класса начинающиеся с 'get'. удобно. но и не только это, там много чего подсказывает. плюс можно например одним кликом вставить все pure virtual методы базового класса - ничего не пропустишь.

Re: А чо, так можно?

Date: 2023-06-01 02:27 pm (UTC)
From: [personal profile] awkravchuk
Ну да, оно и есть. M$FT сами же его и придумали, чтобы оно бежало под капотом у васякода.

Re: А чо, так можно?

Date: 2023-06-02 04:28 am (UTC)
From: [personal profile] anonim_legion
Только language server'ы появились без году неделя

Re: А чо, так можно?

Date: 2023-06-01 02:11 pm (UTC)
From: [personal profile] awkravchuk
> Извиняюсь, недопонял

Мы говорили про чистый C, вы внезапно вспоминаете C++

> Intellisense там есть?

Целая россыпь различных видов плагинов для автодополнения на любой вкус, включая упомянутый выше Language Server.

Re: А чо, так можно?

Date: 2023-06-01 02:16 pm (UTC)
archie_kot: (Default)
From: [personal profile] archie_kot
Мы говорили про чистый C, вы внезапно вспоминаете C++

Я же извинился. Что мне еще сделать?

Re: А чо, так можно?

Date: 2023-06-01 02:26 pm (UTC)
From: [personal profile] awkravchuk
А, извиняюсь, я подумал, что вы мой аргумент не поняли.

Date: 2023-06-02 04:27 am (UTC)
From: [personal profile] anonim_legion
А более ясно писать не пробовали, без ребусов?

Profile

amarao: (Default)
amarao

February 2026

S M T W T F S
123456 7
8910111213 14
15161718192021
22232425262728

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 26th, 2026 04:45 pm
Powered by Dreamwidth Studios