C中的单例模式

时间:2011-03-02 18:20:14

标签: c singleton

  

可能重复:
  How to create a Singleton in C ?

您好,如果我的structure定义如下:

struct singleton
{
    char sharedData[256];
};

我可以在C [not in C ++]中将单例模式强加于上述structure的实例变量吗?

2 个答案:

答案 0 :(得分:9)

如果您只是在头文件中转发声明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;
}

答案 1 :(得分:2)

您可以声明:

char sharedData[256];

这是一个全局变量,不需要struct和singleton-antipattern。