🐙 Antony
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
Vladislav
Внимание! Всё очень расплывчато и сложно! Сам я в исходниках не разбирался толком. Код ошибки:
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
Berkus
Внимание! Всё очень расплывчато и сложно! Сам я в исходниках не разбирался толком. Код ошибки:
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
> Вы поняли что-нибудь?
да, MFC-style code must die
Andrei
Внимание! Всё очень расплывчато и сложно! Сам я в исходниках не разбирался толком. Код ошибки:
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
Внимание! Всё очень расплывчато и сложно! Сам я в исходниках не разбирался толком. Код ошибки:
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
Both single-object and array allocation functions may be defined as public static member functions of a class (versions (15-18)).
они не статик, для начала
Anonymous
Berkus
в общем сначала попробуй их статиками объявить, а потом кури все остальное с http://en.cppreference.com/w/cpp/memory/new/operator_new
Anonymous
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
о них даже видео в ютубе есть
Stanislav
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
Stanislav
Igor
Community, 15.2, билд 26430.15
Stanislav
странно
Stanislav
у меня сразу internal еррор и все
Igor
Igor
"прекращена работ-а программы...", но в лог успевает выругаться
Stanislav
Igor
к слову смотрю я на это безобразию, и в который раз унылю
есть где-нибудь что-нибудь для чайников, как начать разбираться в enable_if и прочем TMP?
melvin
такой вопрос реализация библиотек совершающих системные вызовы (например read) машинозависима?
Stanislav
melvin
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
То есть получается, что либа машинно независима
А зависим только сам вызов
Berkus
melvin
естественно
а в какой момент разделяются (по особенностям машины) реализации этих библиотек?
melvin
Konstantin
А по тому асм коду получается, что в регистры кладутся адрес буфера, дескриптор и сколько читать байт
А потом делается вызов
Stanislav
ой забудьте
Stanislav
его ж выпилили из C++17
Stanislav
ну точнее депрекейтед
Stanislav
можно даже не юзать уже )
Anonymous
Правила сначала прочитать следовало бы. Там сказано, что любые вакансии в личку @AlexFails
Yuri
Прошу простить, поторопился. Сейчас исправлюсь, спасибо!
Berkus
melvin
Berkus
приложениям выглядит всегда одинаково, а для ядра выглядит так как нужно в реализации ядра
Berkus
ну по-человечески сисколы спрятаны в "библиотеку" да
Berkus
в линуксе например есть варианты int 0x80, syscall, sysenter, и чего-то еще было - но приложения всегда вызывают один интерфейс, и знать не знают как именно ядро делает сискол
Ivan
stdarg.h
парни, а где можно исходный код посмотреть, чтобы понять как он это делает. Как???
Berkus