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

Dav*_*vid 4 c++

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

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

还有"min"和"max"宏,可以很容易地用模板替换.

还有大量的定义只是简单地定义为"远"和"近"等.

Dav*_*nan 11

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

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

你提到MINMAX宏并提出模板.好吧,你知道C中没有模板,那些宏甚至可能是C++模板之前的日期.

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

  • @DavidJensen:C++标准库与C API有什么关系?你的前提是错的; Windows API是C语言,而不是C++ API.您也可以问为什么Windows API不使用C#泛型. (2认同)

小智 8

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

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