6

Visual Studio 附带的 C++ 标准库实现和 Windows API(Win32 和 MFC)都包含大量宏。

例如,他们将“TRUE”和“FALSE”定义为 1 和 0。并在所有上下文中将 bool 替换为“BOOL”,它是 int 的 typedef。他们甚至没有使用三向逻辑。

还有“min”和“max”宏,可以很容易地用模板替换。

还有大量的定义只是简单地定义为“远”和“近”之类的东西。

4

2 回答 2

12

大部分代码都是以 C 代码开始的,并且可以追溯到 1980 年代。如果它今天是从头开始编写的,那么您可能会期望代码看起来会有所不同。

例如,您选择BOOL类型。早在最初构想 Windows API 时,C 中还没有布尔类型。

您提到MINMAX宏并提出模板。好吧,如您所知,C 中没有模板,这些宏甚至可能早于 C++ 模板。

虽然 MFC 是一个 C++ 库,但它位于 Win32 之上,这是一个 C API。因此,MFC 的实现显然必须在其实现中使用该 C API。

于 2013-03-20T18:36:02.277 回答
8

在 Ye Olden C 时代(MS-DOS),farnear指针关键字。许多这些库一开始都是用 C 语言编写的:因此,他们没有从头开始重新发明整个标准库,而是使用了一些已经工作的东西,并且已经相当好地工作了。

此外,Windows 本质上主要是一个 C API,而不是 C++ API,因此您可以预期代码中会出现许多东西(如宏、奇怪的定义等)。

于 2013-03-20T18:38:15.967 回答