我想用pthread_once來初始化一些代碼。但調用由
的init_routine() {1}導致編譯時警告 - 警告:傳遞來自兼容的指針類型「調用pthread_once」的參數2,而使用
{2}不給出任何提示傳遞函數作爲參數pthread_once
file1中.C
int init_routine (void) {
// initialize variables
}
在file1.h
int init_routine(void);
現在我包括file2.c中的file1.h
在file2.c中
#include "file1.h"
pthread_once_t prog_inited = PTHREAD_ONCE_INIT;
int start() {
...
pthread_once(&prog_inited, &init_routine); <-- {1}
pthread_once(&prog_inited, (void *)init_routine); <-- {2}
...
return 0;
}
的是這之間的區別?
謝謝。
你的'init_routine'聲明是什麼?如果是'extern void init_routine()',你可能需要將它改爲'extern void init_routine(void)' –
@JosephQuinsey剛剛編輯了這個問題。 'init_routine()'有一個返回類型'int',並且包含在file1.h中的file2.c中。 – adizone
因此,將返回類型從'int'更改爲'void'可能會解決您的問題 –