Dumitru
Справедливо
Berkus
любая работа с железом в теории, на практике битовые поля не портабельны, т.к. не специфицировано куда их конпайлер засунет - может расположить как угодно
🐙 Antony
незаменимо для флажков: вместо нескольких bool и размера ((1-4) * N) можно сделать битове поле и вполть до 32х раз ужать размер структуры
Berkus
флажкам без разницы где лежать, так что да, флажки ок
Anonymous
Внимание! Всё очень расплывчато и сложно! Сам я в исходниках не разбирался толком. Код ошибки: src/game/server/gamecontext.cpp(750) : warning C4291: void *CPlayer::operator new(size_t,int): не найден соответствующий оператор удаления; если при инициализации возникнет исключение, память не будет освобождена src\game/server/player.h(15): см. объявление "CPlayer::operator new"```окей, идём в gamecontext.cpp(750), а там m_apPlayers[ClientID] = new(ClientID) CPlayer(this, ClientID, TEAM_SPECTATORS); Дальше идём в player.h(15):: MACRO_ALLOC_POOL_ID() Что это? Путём несложного поиске по репе ма находим такое #define MACRO_ALLOC_POOL_ID() \ public: \ void *operator new(size_t Size, int id); \ void operator delete(void *p); \ private: Здесь вроде как память не освобождается. Вопрос! Вы поняли что-нибудь? Если да, то что делать, а если нет, то ладно. Ссылки на полные файлы я могу скинуть. P:S собиралось через bam
Andrei
И вообще, это warning, а не ошибка.
Berkus
Berkus
в общем сначала попробуй их статиками объявить, а потом кури все остальное с http://en.cppreference.com/w/cpp/memory/new/operator_new
Vladislav
а сервер падает
Это плюсы, они чаще падают без предупреждения
Anonymous
Это плюсы, они чаще падают без предупреждения
как раз падает при создании пользователя
Berkus
ну ты прочитал?
Berkus
там прямо английским по белому написано
Berkus
Both single-object and array allocation functions may be defined as **public static** member functions of a class
Anonymous
там почти всё английским по белому
Anonymous
я русским-то плохо понимаю
Berkus
Both single-object and array allocation functions may be defined as *******public static****** member functions of a class
Anonymous
ну значит оно не работает
Anonymous
ибо я уже писал так
Berkus
Anonymous
я добавлял static
Anonymous
вообще-то тупо и наугад
Крылатый
Тэкс.
Крылатый
Тупой вопрос. Как в C++ нонче делать свои аттрибуты?
Крылатый
Вроде [[fails_bot]]
Олександр
Макросы?)
Крылатый
melvin
кто сказал макросы?
Крылатый
Besides the standard attributes listed below, implementations may support arbitrary non-standard attributes with implementation-defined behavior. All attributes unknown to an implementation are ignored without causing an error.
Крылатый
Соснуле(
Крылатый
Так и есть.
Крылатый
Боль.
Processor
С++11-17 это же по сути простые доработки поверх, их не сложно будет применить потом
Processor
о них даже видео в ютубе есть
Igor
падает, но не молча: source.cpp(24): error C2686: cannot overload static and non-static member functions with the same parameter types source.cpp(24): note: could be 'void Foo<T>::bar(void)' source.cpp(24): note: or 'void Foo<T>::bar(void)' source.cpp(25): note: see reference to class template instantiation 'Foo<T>' being compiled source.cpp(30): fatal error C1903: unable to recover from previous error(s); stopping compilation
Igor
Community, 15.2, билд 26430.15
Stanislav
странно
Stanislav
у меня сразу internal еррор и все
Igor
"прекращена работ-а программы...", но в лог успевает выругаться
Stanislav
Igor
к слову смотрю я на это безобразию, и в который раз унылю есть где-нибудь что-нибудь для чайников, как начать разбираться в enable_if и прочем TMP?
melvin
такой вопрос реализация библиотек совершающих системные вызовы (например read) машинозависима?
Konstantin
melvin
теперь буду задалбывать вопросами по этому коду
melvin
в строках 14-16 в стек помещаются аргументы?
melvin
потом происходит сам сискол?
melvin
а что дальше, возвращается значение реально прочитанных бит?
Konstantin
Смотри что еще нашел
Konstantin
https://code.woboq.org/userspace/glibc//sysdeps/unix/sysv/linux/read.c.html
Konstantin
Там есть макрос SYSCALL_CANCEL который машинно-зависимый
Konstantin
То есть получается, что либа машинно независима А зависим только сам вызов
melvin
естественно
а в какой момент разделяются (по особенностям машины) реализации этих библиотек?
melvin
То есть получается, что либа машинно независима А зависим только сам вызов
т.е. код который непосредственно совершает сискол?
Konstantin
т.е. код который непосредственно совершает сискол?
Ну по сорцам получается что так Но мои выводи не претендуют на достоверность
Konstantin
А по тому асм коду получается, что в регистры кладутся адрес буфера, дескриптор и сколько читать байт А потом делается вызов
Stanislav
ой забудьте
Stanislav
его ж выпилили из C++17
Stanislav
ну точнее депрекейтед
Stanislav
можно даже не юзать уже )
Anonymous
Правила сначала прочитать следовало бы. Там сказано, что любые вакансии в личку @AlexFails
Yuri
Прошу простить, поторопился. Сейчас исправлюсь, спасибо!
Berkus
а в какой момент разделяются (по особенностям машины) реализации этих библиотек?
API обычно независимый, реализация зависит от ядра (проц, ABI, etc)
Berkus
приложениям выглядит всегда одинаково, а для ядра выглядит так как нужно в реализации ядра
Berkus
ну по-человечески сисколы спрятаны в "библиотеку" да
Berkus
в линуксе например есть варианты int 0x80, syscall, sysenter, и чего-то еще было - но приложения всегда вызывают один интерфейс, и знать не знают как именно ядро делает сискол
Ivan
stdarg.h парни, а где можно исходный код посмотреть, чтобы понять как он это делает. Как???