int存放到void指標

lethe1203發表於2024-03-19

參考部落格:http://blog.chinaunix.net/uid-20548989-id-1667467.html

中斷處理函式,需要把一個值存在 void * 中傳給回撥函式,然後在回撥函式內部把 int 值從 void * 中取出。
把一個 int 存到 void * 變數需要先把它轉換成 long, 這樣能避免:warning: cast to pointer from integer of different size;

方法如下:

int irq;
void *arg;
arg = (void *)(long)irq;

同樣,從 void * 取出 int, 需要這樣:

int fd = (int) (long)arg;

相關文章