首页 > 解决方案 > 混合功能是一种不好的做法吗与其他课程?

问题描述

我正在自学 C++,作为一种实践,我正在做一个非常基本的版本控制系统(非常非常基本)。

我正在使用 Windows 10 和 gcc (MinGW.org GCC Build-20200227-1) 9.2.0 (-std=c++17)

我一直在检查 Microsoft 文档,因为我正在使用<windows.h>. 我已经能够实现一些有趣的东西,所以项目已经成型;但是,我目前正在尝试创建、写入和读取文件,这是我在使用之前所做的事情<fstream>,但我也知道这可以通过<windows.h>函数来​​完成。

所以......如果我使用该函数创建文件但使用/CreateFile()写入和读取其数据怎么办。这是一个不好的做法吗?它会导致效率问题吗?一个比另一个好?只是没关系?ifstreamofstream

好吧,该项目仍在继续:) 我正在<windows.h>为创建文件和<fstream>读/写而混合,但是,我很想知道这是否被推荐,或者这是否是一种不好的做法。

谢谢。

标签: c++winapi

解决方案


最佳做法是尽可能坚持使用标准 C++;也就是说,仅在需要的范围内使用特定于 Windows 的 API 调用。

您不需要调用 CreateFile(...) 来写入文件,所以不要。标准库的实现将在 Win32 API 调用方面无论如何都需要,因此不使用像 CreateFile(...) 这样的调用不会影响性能,因为您正在使用它,只是在由于实现标准库的人所做的工作,这种方式是可移植的。

在所有条件相同的情况下,尽量将您对 Win32 的使用隔离到特定的翻译单元(即 cpp 文件)中。尽可能多地使用标准 C++。您当前的项目可能永远不需要跨平台或与跨平台应用程序共享代码,但这些仍然是需要养成的好习惯。故意使东西不便携是没有用的。


推荐阅读