C89 海合会(GCC)4.7.2在函数返回一个静态结构
你好,
我保持某人的软件,我发现这个函数返回一个静态结构的地址。这应该是好的,因为静态会指示它是全局的,所以结构的地址在程序终止之前可用。
DRIVER_API(driver_t*) driver_instance_get(void)
{
static struct tag_driver driver = {
/* Elements initialized here */
};
return &driver;
}
像这样来使用:
driver_t *driver = NULL;
driver = driver_instance_get();
驱动变量是整个程序中使用,直到其终止。
一些问题:
- 它是很好的做法,以做到这样吗?
- 是否有任何区别,声明它在文件级功能之外是静态的?
- 为什么不传递一个内存池到函数中,并将内存分配给结构,以便在堆中声明结构?
非常感谢您的任何建议,
这个结构特别大,你会非常关心它的出口? – 2013-05-09 14:48:30
如果结构是只读的,那么函数可能应该返回一个指向“const”结构的指针。另外,什么是'DRIVER_API'? – 2013-05-09 14:56:40
DRIVR_API是#define DRIVER_API(类型)EXTERN_C __declspec(dllexport)类型 – ant2009 2013-05-09 15:45:24