我应该更好地使用全局变量吗?

时间:2014-03-03 11:34:27

标签: c variables struct global-variables

我想使用GMainLoop。我想知道使用全局或局部变量是否更好。我想每5秒调用一次函数。它使用一些堆变量,我只想要malloc一次。我有两个想法。我可以将所有参数放在结构中。但有时它会在struct中的struct in 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
} 

OR

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 个答案:

答案 0 :(得分:1)

使用局部变量或结构(更易读,更模块化)。请注意,您可以传递它们,例如作为struct的客户端数据的某些g_timeout_add_seconds的地址。所以更喜欢第一个版本到第二个版本。但是,您main应初始化data,例如在Glib事件循环之后使用calloc然后free