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。