Windows API,C ++标准库,VS运行时库,我应该使用哪一个?

时间:2013-12-17 10:22:43

标签: c++ windows

正如您从标题中看到的,我正在谈论使用C ++在Windows上进行编程。当我学习C ++时,我只知道像cstream这样的C ++标准库,但我看到很少有代码在Windows上使用它们。更多使用Win32 API或MFC。我读了一些像“Windows Via C / C ++”这样的书,使用了很多VS运行时库。知道这么多知识对我来说很困惑。

我认为C ++标准库更加用户友好。 API和运行时看起来很晕。代码(与C#相比)对我来说太丑了......但是我不敢使用标准库,因为我害怕被认为是不专业的......

那么在Windows上编程的最佳做法是什么?

2 个答案:

答案 0 :(得分:1)

这取决于您的目标和需要解决的问题。

但要记住一些事情:

  • 如果您想要在Windows上编写非常简单的控制台应用程序以外的任何其他操作,可能无法避免使用Win32 API。
  • 你可以而且应该以C ++友好的方式包装Win32 API,想想RAII来处理句柄和资源,以及简化API并将错误代码转换成异常等的包装器。
  • MFC非常糟糕,特别是如果你喜欢编写漂亮的现代C ++,但有时它是最简单的GUI方法。
  • VS运行时库有时会提供有用的功能,请参阅我对Win32 API的建议,您可能只需要将它们包装起来。

答案 1 :(得分:0)

我不认为这是必要的。对于任何应用程序,您需要不同类型的Api:" Os Api" ," Gui Api"和"运行时Api"

Os Api (套接字/文件系统/线程)
第一种选择是直接使用Windows API,但更好的方法是使用包含它的Boost这样的库。通过这种方式,您可以毫不费力地(几乎)在任何平台上运行,并且您将来可以节省宝贵的时间(即使您现在没有针对其他操作系统)。

运行时Api 我会选择C运行时,因为它更便携。所有功能也由Windows提供,但使用它们的原因很少。我现在只能看到一个:如果你有少量的运行时api调用而你没有;我想动态依赖(与运行时链接),静态链接将使你的二进制文件大而没有任何好处。

Gui Api 这取决于你在寻找/知道什么。如果你和Api一起多产,试着用那个 直接Api - 用于高级定制。
MFC / WTL - 直接Api上的包装器。更容易用于经典问题但是因为您的要求更陌生并且使用Direct Api调用的陌生人变得更加简单。 WinForm / WTL - 如果您有所了解,您可以拥有托管gui和非托管后端。

希望有所帮助