Visual Studio附带的C ++标准库实现和Windows API(包括Win32和MFC)都包含大量宏。
例如,他们将“TRUE”和“FALSE”定义为1和0.并在所有上下文中将bool替换为“BOOL”,它是int的typedef。他们甚至没有使用三向逻辑。
还有“min”和“max”宏,可以很容易地用模板替换。
还有很多定义只是简单地定义为“远”和“近”等。
答案 0 :(得分:11)
这些代码大部分都是以C代码开头,并且可以追溯到20世纪80年代。如果今天从头开始编写,那么你可以期待代码看起来有点不同。
例如,您选择BOOL
类型。在当天,当首次构思Windows API时,C中没有布尔类型。
您提及MIN
和MAX
宏并提出模板。好吧,你知道C中没有模板,这些宏甚至可能是C ++模板之前的版本。
虽然MFC是一个C ++库,但它位于Win32上,这是一个C API。因此,MFC的实现显然必须在其实现中使用该C API。
答案 1 :(得分:8)
在Ye Olden C天(MS-DOS)中,far
和near
是指针关键字。其中许多库都是用C语言编写的:因此,他们不是从头开始重新发明整个标准库,而是使用已经有效的东西,并且已经运行得相当好。
此外,Windows本质上是一个C API,而不是C ++,所以你可以期待代码中出现很多东西(如宏,奇怪的定义等)。