为什么microsoft在他们的C ++代码中使用这么多的宏?

时间:2013-03-20 18:34:10

标签: c++

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

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

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

还有很多定义只是简单地定义为“远”和“近”等。

2 个答案:

答案 0 :(得分:11)

这些代码大部分都是以C代码开头,并且可以追溯到20世纪80年代。如果今天从头开始编写,那么你可以期待代码看起来有点不同。

例如,您选择BOOL类型。在当天,当首次构思Windows API时,C中没有布尔类型。

您提及MINMAX宏并提出模板。好吧,你知道C中没有模板,这些宏甚至可能是C ++模板之前的版本。

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

答案 1 :(得分:8)

在Ye Olden C天(MS-DOS)中,farnear是指针关键字。其中许多库都是用C语言编写的:因此,他们不是从头开始重新发明整个标准库,而是使用已经有效的东西,并且已经运行得相当好。

此外,Windows本质上是一个C API,而不是C ++,所以你可以期待代码中出现很多东西(如宏,奇怪的定义等)。