建了個鏈接庫,聲明了void (*function)(int *a);然后function=dlsym(xlib,"function");然后怎么在pthread_create中調用這個function函數?填了好幾種方式都出現段錯誤還有void (*function)(int *);寫成void* function(int *),function=dlsym(xlib,"function");這句就會出錯,這兩個有什么區別?我想在pthread_create中調用function,寫成function,(void *)function都不行,出現段錯誤。
2 回答

眼眸繁星
TA貢獻1873條經驗 獲得超9個贊
原型定義
int pthread_create(pthread_t *restrict tidp,
const pthread_attr_t *restrict attr,
void *(*start_rtn)(void),
void *restrict arg);
第一個參數為指向線程標識符的指針。
第二個參數用來設置線程屬性。
第三個參數是線程運行函數的起始地址。
最后一個參數是運行函數的參數。
這樣子懂了吧?

qq_花開花謝_0
TA貢獻1835條經驗 獲得超7個贊
void* (function)(argument*) 是一個返回值為void型的函數指針
void* function(argument*)是一個返回值為void 的函數
概念不同
- 2 回答
- 0 關注
- 128 瀏覽
添加回答
舉報
0/150
提交
取消