建了個鏈接庫,聲明了void (*function)(int *a);然后function=dlsym(xlib,"function");然后怎么在pthread_create中調(diào)用這個function函數(shù)?填了好幾種方式都出現(xiàn)段錯誤還有void (*function)(int *);寫成void* function(int *),function=dlsym(xlib,"function");這句就會出錯,這兩個有什么區(qū)別?我想在pthread_create中調(diào)用function,寫成function,(void *)function都不行,出現(xiàn)段錯誤。但是如果不使用鏈接庫時是好用的.
3 回答

阿波羅的戰(zhàn)車
TA貢獻1862條經(jīng)驗 獲得超6個贊
原型定義
int pthread_create(pthread_t *restrict tidp,
const pthread_attr_t *restrict attr,
void *(*start_rtn)(void),
void *restrict arg);
第一個參數(shù)為指向線程標(biāo)識符的指針。
第二個參數(shù)用來設(shè)置線程屬性。
第三個參數(shù)是線程運行函數(shù)的起始地址。
最后一個參數(shù)是運行函數(shù)的參數(shù)。
這樣子懂了吧?

GCT1015
TA貢獻1827條經(jīng)驗 獲得超4個贊
void* (function)(argument*) 是一個返回值為void型的函數(shù)指針
void* function(argument*)是一個返回值為void 的函數(shù)
概念不同
添加回答
舉報
0/150
提交
取消