При определении процесса обратного вызова в Xt (например, XtTimerCallbackProc) client_data указывается как XtPointer. Безопасно ли передавать int через client_data, а не фактический указатель, и отбрасывать его внутри процедуры?Безопасно ли передавать int с помощью XtPointer?
Например:
void foo(void) {
...
int data = 1;
XtAppAddTimeout(app_context, 1000, timer_cb, data);
...
}
void timer_cb(XtPointer client_data, XtIntervalId *timer)
{
int my_data = (int) client_data;
...
}
Найдено в '#include', в случае, если OP об этом не знает. –
ephemient
Из того, что я прочитал, uintptr_t гарантированно работает для ptr-> int-> ptr, но не обязательно int-> ptr-> int. Таким образом, короткий ответ кажется нет, нет портативного способа. Это верно? – ToddR