Синтаксис, кстати, не то чтобы новый: это продолжение синтаксиса атрибутов, поэтому поломаться ничего не должно. А чтобы не замедлять компиляцию, можно выставить соответствующий build-level.
An identifier is an arbitrarily long sequence of digits, underscores, lowercase and uppercase Latin letters, and Unicode characters specified using \u and \U escape notation (since C99).
(...)
It is implementation-defined if raw (not escaped) Unicode characters are allowed in identifiers
Во-первых, с точки зрения организации кода, в заголовочных файлах обычно определяется только интерфейс какого-то модуля программы — объявления типов и функций, документирующие комментарии и т.д. Детали реализации помещают в файлы .c
Во-вторых, если такой заголовочный файл подключить в два раздельно компилирующихся файла, то она скомпилируется в каждом из них, что приведет к ошибке на стадии компоновки — нескольким определениям одного и того же имени (функции).
Про интерпретаторы байткода на Хабре недавно был очень хороший пост. Мне кажется, он будет вам интересен, в том числе как пример хорошей обучающей статьи на данную тему.
А код плохой, да. Удручают, например, определения функций в заголовочных файлах, или каскады else if вместо одного switch.
Но ведь в Turbo Pascal 5.5 инициализация vptr — тоже задача конструктора; значит, конструктор предка, вызванный конструктором потомка, все равно будет ее выполнять, разве нет? Все равно получаются «напрасные» присваивания.
А действительно, зачем? Из приведенной ссылки это не слишком понятно.
Если мы теперь вызовем на окне метод Show(), оно тут же схлопнется, а так как нам бы хотелось на него смотреть все время, то это окно нужно запихнуть в контейнер, который поддерживает весь жизненный цикл.
blogs.windows.com/msedgedev/2019/04/08/microsoft-edge-preview-channel-details
Синтаксис, кстати, не то чтобы новый: это продолжение синтаксиса атрибутов, поэтому поломаться ничего не должно. А чтобы не замедлять компиляцию, можно выставить соответствующий build-level.
Implementation-defined. Где-то можно, где-то нельзя.
https://en.cppreference.com/w/c/language/identifier
В GCC, например, можно.
Во-вторых, если такой заголовочный файл подключить в два раздельно компилирующихся файла, то она скомпилируется в каждом из них, что приведет к ошибке на стадии компоновки — нескольким определениям одного и того же имени (функции).
Про интерпретаторы байткода на Хабре недавно был очень хороший пост. Мне кажется, он будет вам интересен, в том числе как пример хорошей обучающей статьи на данную тему.
А код плохой, да. Удручают, например, определения функций в заголовочных файлах, или каскады else if вместо одного switch.
Только этот случай покрывается уже существующими оптимизациями (инлайнинг конструктора базового класса + удаление лишнего присвоения + удаление «мертвого» кода конструктора базового класса).
godbolt.org/z/HxCGjt
А действительно, зачем? Из приведенной ссылки это не слишком понятно.
Почему вам не подошел Window.ShowDialog()?