Size: a a a

2020 July 15

D

Dmitry in supapro.cxx
Anatoly Shirokov
ладно, что-то я уже плыву
Все равно спасибо!
источник

CD

Constantine Drozdov in supapro.cxx
Dmitry
У меня в хидере:
extern "C" __declspec(dllexport) int MyMethod(void* manager)
Зачем так вообще?
источник

CD

Constantine Drozdov in supapro.cxx
Там же даже если это C++ тип можно типизацию сохранить
источник

AS

Anatoly Shirokov in supapro.cxx
Dmitry
Все равно спасибо!
вообщем, правило такое: в С интерфейсе не должно быть C++ объектов, только POD типы и указатели на них. Если что-то сложнее, то заменяй на void*
источник

s

std::slavik in supapro.cxx
источник

CD

Constantine Drozdov in supapro.cxx
Anatoly Shirokov
вообщем, правило такое: в С интерфейсе не должно быть C++ объектов, только POD типы и указатели на них. Если что-то сложнее, то заменяй на void*
Не обязательно же, можно объявить структуру как винапи хендлы объявляет и сохранить типизацию. Будет well defined случай reinterpret_cast
источник

AS

Anatoly Shirokov in supapro.cxx
Constantine Drozdov
Не обязательно же, можно объявить структуру как винапи хендлы объявляет и сохранить типизацию. Будет well defined случай reinterpret_cast
не обязательно что?
источник

CD

Constantine Drozdov in supapro.cxx
Anatoly Shirokov
не обязательно что?
Не обязательно void* использовать
источник

s

std::slavik in supapro.cxx
Constantine Drozdov
Не обязательно же, можно объявить структуру как винапи хендлы объявляет и сохранить типизацию. Будет well defined случай reinterpret_cast
структура в си и си++ - разные вещи
источник

AS

Anatoly Shirokov in supapro.cxx
Constantine Drozdov
Не обязательно void* использовать
ну если у меня сложный класс C++, то здесь только указатель на void.
источник

CD

Constantine Drozdov in supapro.cxx
Anatoly Shirokov
ну если у меня сложный класс C++, то здесь только указатель на void.
Нет, для каждого такого можно объявить парную прозрачную структуру и реинтерпреткастить
источник

🎄T

🎄🎊 R 🎅 Tb| ✡️ 🎊🎄... in supapro.cxx
Constantine Drozdov
Нет, для каждого такого можно объявить парную прозрачную структуру и реинтерпреткастить
А лэйаут структуры в стандарте определяется?
источник

CD

Constantine Drozdov in supapro.cxx
Anatoly Shirokov
ну если у меня сложный класс C++, то здесь только указатель на void.
Надо только чтобы алигн совпал в итоге, тогда каст через эту структуру и назад well defined
источник

AS

Anatoly Shirokov in supapro.cxx
Constantine Drozdov
Нет, для каждого такого можно объявить парную прозрачную структуру и реинтерпреткастить
ну разве что для строгой типизации, а так void* вполне годный и 100% работающий вариант
источник

CD

Constantine Drozdov in supapro.cxx
Anatoly Shirokov
ну разве что для строгой типизации, а так void* вполне годный и 100% работающий вариант
Ага. То есть понятно что сишный код не может лезть в плюсовый класс, но можно сохранить типизацию
источник

CD

Constantine Drozdov in supapro.cxx
Anatoly Shirokov
ну разве что для строгой типизации, а так void* вполне годный и 100% работающий вариант
Проблема что void* будет немного легко всё накосячить
источник

s

std::slavik in supapro.cxx
Constantine Drozdov
Проблема что void* будет немного легко всё накосячить
ну так если речь о си идет - это обычно лоулевел
источник

CD

Constantine Drozdov in supapro.cxx
Ошибки компиляции при проверке типов слишком значимы даже для си
источник

s

std::slavik in supapro.cxx
там порой без void* особо не как
источник

AS

Anatoly Shirokov in supapro.cxx
Constantine Drozdov
Проблема что void* будет немного легко всё накосячить
ну, Костя, я соглашусь, но С - это ассемблер считай, не до жиру
источник