需要构建一个C库,其中包含一个共享的Singleton类。下面是一个可以实现此目标的示例代码:
singleton.h:
#ifndef _SINGLETON_H_
#define _SINGLETON_H_
typedef struct {
int count;
} Singleton;
Singleton* SingletonInstance();
#endif // _SINGLETON_H_
singleton.c:
#include "singleton.h"
static Singleton* instance = NULL;
Singleton* SingletonInstance() {
if (instance == NULL) {
instance = malloc(sizeof(Singleton));
instance->count = 0;
}
return instance;
}
在代码中,我们定义了一个Singleton类,它只有一个计数器属性。Singleton类的构造函数是SingletonInstance(),它负责创建Singleton类的实例并返回一个指向该实例的指针。在SingletonInstance()函数中,我们先检查实例是否已创建。如果是,则返回该实例的指针。否则,我们分配一个新的Singleton实例并初始化其计数器属性为零。
一旦我们有了Singleton实例,我们就可以在C库的其他部分使用它。我们可以在该库的其他源文件中包含singleton.h头文件,然后调用SingletonInstance()函数来获得Singleton实例的指针。这样,在整个库中,我们都可以共享同一个Singleton实例。