在 C 中使用未命名结构创建 Singleton 有什么问题?

问题描述 投票:0回答:1

我想在 C 中创建一个单例结构,并提出了使用未命名结构来定义全局变量的想法,我们无法创建它的另一个实例,因为它是未命名的结构(因此我们有一个单例!)

#ifndef __for_including_this_file_once__
#define __for_including_this_file_once__

struct { variables } singleton_strcut;

#endif // __for_including_this_file_once__

这样我们就可以在包含此

.h
文件的任何位置仅通过实例名称来访问该实例。

  • 这可能会产生什么问题(尤其是在多线程编程的情况下)?我们可以有什么解决方法?
c singleton unnamed-class
1个回答
0
投票

如果您有多个 .c 文件,这将不起作用。如果多个源文件包含此标头,那么当您到达链接器阶段时,您将最终遇到多重定义错误。

您需要在头文件中放置一个声明,并在一个源文件中放置一个定义,为此,您需要为该结构指定一个名称。

© www.soinside.com 2019 - 2024. All rights reserved.