C中的单例模式
可能重复:
如何在C中创建Singleton?
您好,如果我有一个structure
定义如下:
struct singleton { char sharedData[256]; };
我可以在C [不是C ++]中将单例模式强加于上述structure
实例变量吗?
如果只是在头文件中转发声明struct
,则客户端将无法创建它的实例。 然后,您可以为单个实例提供getter函数。
像这样的东西:
.h
:
#ifndef FOO_H #define FOO_H struct singleton; struct singleton* get_instance(); #endif
.c
:
struct singleton { char sharedData[256]; }; struct singleton* get_instance() { static struct singleton* instance = NULL; if (instance == NULL) { //do initialization here } return instance; }
你可以声明:
char sharedData[256];
这是一个全局变量,不需要struct和singleton-antipattern。