Size: a a a

2020 July 25

АК

Александр Караев... in pro.cxx
Valentin Kornienko
Окей, я рассматриваю где-то случай использования библиотеки в этом контексте?
источник

VK

Valentin Kornienko in pro.cxx
Мне трудно представить случай, где необходимо получить Н сишных колбеков
источник

VK

Valentin Kornienko in pro.cxx
С одинаковой сигнатурой, при этом.
источник

АК

Александр Караев... in pro.cxx
vehlwn
#include "../CallbackConnector/CallbackConnector.h"
#include <iostream>
struct A {
   using cb_t = void (*)();
   cb_t func;
   A() {
       func = cbc::obtain_connector(
           [this]() { std::cout << "this = " << (void*)this << "\n"; });
   }
};
int main() {
   A a, b;
   a.func();
   b.func();
}
this = 000000000023F6E8
this = 000000000023F6E8
вот пример, @Valentyn_Korniienko предложи его решение, чтобы this выводился разным
источник

АК

Александр Караев... in pro.cxx
Valentin Kornienko
Мне трудно представить случай, где необходимо получить Н сишных колбеков
очень легко.
возьмём кнопку, которая что-то где-то биндит. складываем кнопки в вектор (у нас ведь может быть массив кнопок?) - бабах
источник

VO

Vyacheslav Olkhovche... in pro.cxx
или просто описание интерфейса в конфиге
источник

VK

Valentin Kornienko in pro.cxx
Александр Караев
вот пример, @Valentyn_Korniienko предложи его решение, чтобы this выводился разным
Хм. Если тег-инт - можно добавить в библиотеку счетчик, чтобы получать теги для создания сигнатуры?
источник

VO

Vyacheslav Olkhovche... in pro.cxx
сигнатура создается на этапе компиляции
источник

VO

Vyacheslav Olkhovche... in pro.cxx
впрочем можно за собой таскать libllvm...
источник

АК

Александр Караев... in pro.cxx
Valentin Kornienko
Хм. Если тег-инт - можно добавить в библиотеку счетчик, чтобы получать теги для создания сигнатуры?
Счётчик времени компиляции, а длина цикла рантаймовая
источник

O

Ofee in pro.cxx
Александр Караев
for (int i = 0; i < rand() % 5; i++) {
 cbc::obtain_connector(...);
}

удачи с прописыванием тегов
В целом, можно заранее в компил-тайме нагенерировать какое-то максимальное число инстанцирований функции, а потом уже в рантайме выбирать нужные
источник

d

dekabr in pro.cxx
MFC использует внешнюю хештаблицу HWND -> this
источник

d

dekabr in pro.cxx
Переслано от dekabr
Да, GWLP_USERDATA это решение
Посмотрю MFC в поисках более элегантного ответа, но и текущий меня устраивает
источник

АК

Александр Караев... in pro.cxx
Ofee
В целом, можно заранее в компил-тайме нагенерировать какое-то максимальное число инстанцирований функции, а потом уже в рантайме выбирать нужные
Ты сам прекрасно знаешь, почему это плохо в общем случае
источник

VK

Valentin Kornienko in pro.cxx
Александр Караев
Ты сам прекрасно знаешь, почему это плохо в общем случае
Why?
источник

VK

Valentin Kornienko in pro.cxx
в целом и в общем, это будет работать
источник

VK

Valentin Kornienko in pro.cxx
А, если задача стоит в пробросе вектора сишных колбеков. Ну хм, это печаль
источник
2020 July 26

AB

Artöm Bakri Al-Sarmi... in pro.cxx
Планируют ли в си убрать каст funcptr->void* из implementation defined?
источник

d

disba1ancer in pro.cxx
Artöm Bakri Al-Sarmini
Планируют ли в си убрать каст funcptr->void* из implementation defined?
это технически сложно, пока есть упоротые пишущие под дос однозначно так и останется
источник

d

disba1ancer in pro.cxx
да и наверняка до сих пор существуют другие упоротые архитектуры с адресами разных размеров
источник