C - 在模块内部或外部实例化的单例?

C - singleton instantiated inside or outside module?

C 模块有什么限制

  1. 实例化它自己的核心struct(作为一个单例)并且用户代码使用extern
  2. 访问它

VS.

  1. 让用户代码实例化单例 struct 而不是

?

例如,前者的一个限制是用户不能选择分配方式。

EDIT 这个问题的原因是我用方法号遇到了一些问题。 1 以前(C语言限制)现在忘记是什么了!

  1. 如果你想要绝对确定,单例"stays single",让模块处理它的创建。

  2. 如果要隐藏单例的实现细节,您还希望让模块处理它,并且可以选择 return 指向单例 内部的不透明指针struct,所以用户无非就是一个"handle"。然而句柄不是必需的,因为它是一个单例:-).