【问题标题】:Should I better use global variables?我应该更好地使用全局变量吗?
【发布时间】:2014-04-04 10:33:25
【问题描述】:

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

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
} 

请给我线索。

【问题讨论】:

    标签: c variables struct global-variables


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2012-02-25
      • 2017-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-06
      • 2010-10-21
      相关资源
      最近更新 更多