2014-03-03 5 views
0

GMainLoop을 사용하고 싶습니다. 전역 변수 나 지역 변수를 사용하는 것이 더 나은지 궁금합니다. 5 초마다 기능을 호출하고 싶습니다. 일부 힙 변수를 사용하고 malloc을 한 번만 사용하려고합니다. 두 가지 아이디어가 있습니다. 모든 인수를 구조체에 넣을 수 있습니다. 하지만 때로는 구조체의 구조체에 struct가있을 수도 있습니다. 그래서 이름 명명법은 복잡하고 가독합니다. 또한 모든 데이터를 흐리게 만들 수 있습니다.전역 변수를 더 잘 사용해야합니까?

typedef struct data_t 
{ 
    unsigned char *pUncompressStreamData; 
    unsigned char *pStartUncompressStreamData 
    analyzers_t analyzers; 
    GTree *tree; 
}data_t; 
main_loop(data_t data) 
{ 
    //data_mallocs and other stuff 
} 
int main() 
{ 
    data_t data; 

    g_timeout_add_seconds (5, main_loop, data); 
    /free all data member 
} 

또는

unsigned char *pUncompressStreamData; 
unsigned char *pStartUncompressStreamData 
analyzers_t analyzers; 
GTree *tree; 

main_loop(data_t data) 
{ 
    //data_mallocs and other stuff 
} 
int main() 
{ 

    g_timeout_add_seconds (5, main_loop, NULL); 
    /free all data member 
} 

나에게 단서를 제공하십시오 : 그것은 뭔가처럼 될 것입니다.

답변

1

로컬 변수 또는 구조체 (읽기 쉽고 모듈 식)를 사용하십시오. 전달할 수 있습니다 (예 : 일부 struct의 주소로 클라이언트 데이터는 g_timeout_add_seconds입니다. 첫 번째 버전을 두 번째 버전보다 선호하십시오. 그러나 maindata 등으로 초기화해야합니다. calloc으로, 그 다음에 free이 Glib 이벤트 루프 다음에옵니다.

관련 문제