0
S를 GSourceFunc로 가져 오는 가장 좋은 방법은 무엇입니까? 아니면 둘 다?struct 내에서 구조체를 GSourceFunc에 전달하는 가장 좋은 방법
typedef struct{
//...
}S;
struct MS{
//..
S *St;
};
static gboolean AL_Calback(gpointer data){
S *St = (S*)user_data;
St->Something = SomethingElse;
return TRUE;
}
int main (int argc, char *argv[]){
//...
MS *MainStruct = gnew0(MS, 1);
Mainstruct->St = gnew0(S, 1);
clutter_threads_add_timeout_full(G_PRIORITY_HIGH, 100, AL_Callback, MainStruct->St, NULL);
//...
}
또는 같은 , 나는 다른 방법을 시도했지만, 그들이 일을 할 수 없었던
typedef struct{
//...
}S;
struct MS{
//..
S St;
};
static gboolean AL_Calback(gpointer data){
MS *MV = (MS*)user_data;
MV->S.something = SomethingElse;
return TRUE;
}
int main (int argc, char *argv[]){
//...
MS *MainStruct = gnew0(MS, 1);
clutter_threads_add_timeout_full(G_PRIORITY_HIGH, 100, AL_Callback, MainStruct, NULL);
//...
}
. clutter_add_timeout은 포인터를 인수로 취해야합니다.
'clutter_threads_add_timeout' 날 정말 그냥하는 gpointer하지만 아무것도 전달할 수 있도록 솔기하지 않습니다 ptomato 지적 동적으로 가능 세그먼트 폴트를 방지하기 위해
MainStruct
구조를 할당하는 코드 업데이트 '(void *)'. – MVTC@MVTCplusplus - 코드 다음의 문장을 무시하십시오. a) 포인터 멤버가 있고 그것을 통과시키는 것 사이에는 차이가 없습니다. 및 b) 구조체 멤버가 있고 해당 주소를 전달합니다 (메모리 할당 차이 제외) – Attila
감사. 나는 아직 시험을 보지 않았지만 당신이 제 질문에 거의 대답했다고 생각합니다. – MVTC