Рассмотрим следующий код:
struct data
{
int foo;
int bar;
};
data a;
a.foo = 200;
a.bar = 300;
static void update(data* a, int rspec)
{
if (!rspec) //my data management
{
3rdPartyApi->CreateStream();
3rdPartyApi->PushData(a->foo);
3rdPartyApi->PushData(a->bar);
3rdPartyApi->CloseStream();
}
else // internal data management
{
3rdPartyApi->CreateStream();
3rdPartyApi->PushData(3rdPartyApi->BufferQueue);
3rdPartyApi->CloseStream();
}
3rdPartyApi->PushStream(3rdPartyApi->GetLastStreamBuffer().POD());
}
Допустим, я меняю значение a.foo или a.bar, и мне требуется вызвать Update там после назначения. Можно ли это сделать, не вызывая Update () для каждого изменения вручную?
[EDIT]
Обратите внимание, что созданная функция обновления также назначается указателю функции для
сторонний API, так что он может делать свое собственное внутреннее обновление. Поэтому сделать функцию обновления неглобальной невозможно, поэтому текущая функция обновления является глобальной.
[EDIT]
Я также переписал мой пример, чтобы он был более понятным и верным для реального API, который я использую
1011 * например *
3rdPartyApi->StreamUpdate((void (*)(void*, int))update);