![]() |
Страницы (13): [1] 2 3 4 5 » ... Последняя » Показать все 188 сообщений этой темы на одной странице |
HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Флуд (https://hlfx.ru/forum/forumdisplay.php?forumid=11)
-- Заметки на полях (https://hlfx.ru/forum/showthread.php?threadid=5815)
Заметки на полях
Я, как вы, должно быть знаете, в данный момент работаю над собственной виртуальной машиной для XashNT, которая будет использоваться для описания игровых объектов, меню и интерфейса редактора. Ну и может еще для чего-нибудь. Чтобы не плодить сущности, я решил сделать в этой машинке слегка ограниченный С++, который будет иметь большинство возможностей настоящего, но при этом выполняться в виртуальной среде и иметь всю необходимую мета-информацию, ради которой, виртуальные машинки обычно и пишутся. Соответственно, чтобы привести синтаксис в соответствие с настоящим компилятором С++, мне иногда приходится проводить забавные эксперименты, о которых нигде не написано и которые обычно никому не приходят в голову.
Я решил собрать в верхнем посте все подобные казусы, ну по типу того, как иногда выходят статьи на Хабре про аналогичные вещи. Поехали:
enum; |
1 | typedef class |
2 | { |
3 | int foo; |
4 | } MyClass; |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Почему просто не взять какой-то нибудь AngelScript вместо виртуальной машины?
__________________
Мой сайт
Xash3D Modding Discord
Есть вещи, которые лично меня там не устраивают.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
typedef class тоже вполне валиден. Не знаю как у тебя что-то на линковке ломается, там уже обычно классов нет.
__________________
Xash3D FWGS форк
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Товарищи, нужна ваша небольшая помощь. Если у вас есть под рукой разные компиляторы, потестируйте следующую ситуацию:
1 | void TestStackFree( void ) |
2 | { |
3 | int i; |
4 |
5 | delete &i; |
6 | } |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
1 | void TestStackFree( void ) |
2 | { |
3 | int i; |
4 |
5 | delete &i; |
6 | } |
__________________
Мой сайт
Xash3D Modding Discord
Мда GCC самый умный оказался.
Ну я примерно этого и ожидал.
При освобождении памяти пограммиста поджидает столько граблей, что очуметь можно.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
Мой сайт
Xash3D Modding Discord
Никогда об этом не задумывался, но вот такая конструкция
void Test( class *ptr ) |
{ |
} |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Сегодня выяснил совершенно удивительную вещь. Оказывается в таких языках как Java, C#, PHP, а так же Unigine Script, Angel Script любые методы у объектов нигде не задекларированы и узнать об их наличии можно только из документации. Либо IDE выдаст подсказку выпадающим списком.
Там же по идее нет атомарных типов, ну по крайней мере в Java.
Каждый "простой" тип - это класс с кучей встроенных методов.
И вот нет никакой возможности увидеть хидер этого типа и посмотреть какие методы доступны. Либо через документацию, которая может и устареть, либо через IDE, который тоже непонятно как это показывает.
Ну надеюсь из фреймворка берёт. Если там константные таблички, то это вообще волшебно. Впрочем, для Angel Script положение еще веселее.
Там есть атомарные типы без методов и возможнось зарегистрировать пользовательские типы сравнительно простым образом (за что его многие превозносили - за простоту биндинга). Однако почему-то никому не пришло в голову, что без документации узнать, какие именно есть новые объекты и какие у них методы, попросту невозможно. IDE у AngelScript помоему вообще никакого нет. А документацию, как обычно составляют когда-нибудь потом.
И вы еще спрашиваете, за что я не люблю вот эти языки?
Причём это официально задекларированый механизм. Знающий наизусть все методы в Java может считаться миддлом. Вот так на ровном месте создаются рабочие места и растёт ВВП. Затем выходит новая версия Java и всё можно начинать сначала.
Добавлено 18-04-2022 в 21:37:
Ну и заодно, у вас есть уникальная возможность повлиять на ключевые слова будущего скриптового языка XashNT. Для членов класса (да и не только для них), требуются модификаторы, которые будут разрешать делать ядру с этими переменными определённые действия. Например, передача по сети, сохранение в сейв, итд.
на данный момент я остановился на следующих ключевых словах:
shared - переменная будет передаваться по сети на клиент
persistent - переменная будет сохраняться в сейв
predictable - состояние переменной будет предиктиться на клиенте
field - разрешено записывать в эту переменную настройки из описания энтить уровня, например spawnflags.
Если у вас есть какие-то предложения по иному неймингу, я вас внимательно слушаю. Так же помните, что предложенные вами слова, должны как можно менее точно отражать суть, потому что это общее правило именования всяких вещей, которым суждено стать стандартом. Чем абстрактнее, тем лучше.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Переменные для сохранения? Шта?
Вот посмотри как в юнити сделано:
https://habr.com/ru/post/549018/
https://mirror-networking.gitbook.io/docs/
Можно как то так:
public Network.Shared.Predictable<int> kekcheburek;
__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
То есть как-то так?
1 | class target_switch |
2 | { |
3 | public: |
4 | shared persistent field string target; |
5 | target_switch(string init_target) : target(init_target) {} |
6 | }; |
__________________
typedef shared predictable persistent vec3 worldpos; |
worldpos m_origin; |
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Временная зона GMT. Текущее время 01:26. | Страницы (13): [1] 2 3 4 5 » ... Последняя » Показать все 188 сообщений этой темы на одной странице |
На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024