gpt4 book ai didi

c - C中的设计问题

转载 作者:行者123 更新时间:2023-12-04 04:42:46 24 4
gpt4 key购买 nike

我正在努力解决设计问题,并且正在尝试为我的情况找到“最佳实践”的答案。

假设我有一个名为 Logger.c 的文件(和 Logger.h )负责在我的程序中记录操作。

我希望我的所有模块都引用记录器,所以每个模块都有一个#include Logger.h .

假设我有一个名为 NTFS.c 的模块负责与 NTFS FS 交互的模块,该模块具有在其 header 中定义的特殊结构,例如:NTFS_Partition.
这是问题所在:

一方面,我希望记录器能够将 NTFS_Partition 的格式化表示打印到日志文件中,因此我必须 #include NTFS.hLogger.h .

(Inside Logger.h)

#include NTFS_Partition
VOID Log_Partition(NTFS_Partition *part);

另一方面,我不确定 Logger 是否应该重新引用引用他的模块。

目前我看到两个主要选择:

1.Logger.h 包括 NTFS.h,NTFS.c 包括 Logger.h(这个工作)

2.我创建了一个名为 NTFS_Types.h 的新头文件,它将在所有
模块,并且只包含 NTFS 结构的减速(如 NTFS_Partition)。

非常感谢,
迈克尔。

最佳答案

您可以创建一个共享 header ,其中定义了所有结构。

// structs.h
struct NTFS_Partition { .. };
struct FAT32_Partition { .. };
struct FAT16_Partition { .. };

将其包含在 logger.h 中.
// logger.h
#include "structs.h"
VOID Log_Partition(NTFS_Partition *part);
VOID Log_Partition(FAT32_Partition *part);
VOID Log_Partition(FAT16_Partition *part);

并包括 logger.h在各种源文件中。
// NTFS.c
#include "logger.h"
// FAT32.c
#include "logger.h"
// FAT16.c
#include "logger.h"

在 C++ 中,最好在不同的头文件中保留不同的不相关类定义。但是在 C 中,将不同的结构定义放在单独的头文件中可能是一种矫枉过正的做法。

关于c - C中的设计问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18648049/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com