为指针星号创建一个#define

Creating a #define for the pointer asterisk

本文关键字:一个 #define 指针 创建      更新时间:2023-10-16

我正在开发一个API,我想它可以追溯到80年代,API的原始架构师已经不在我们公司工作了。这个API,我们称之为ABC API,定义在一个公共头文件abc.h中,它包含以下定义:

#define ABC_PTR_DECL *

,然后在头文件的许多地方:

typedef unsigned char uint8, ABC_PTR_DECL uint8_ptr;

问题是,为什么有人#define ABC_PTR_DECL而不直接使用星号?是否有/曾经有理由定义它以便于在一个地方轻松更改?

我想在新的API版本中删除这个定义,但是我一直想知道为什么我们这样做。

我能想到的唯一原因是,在MS-DOS和286的糟糕的旧日子里,内存是分段的,所以有时你需要一个远指针,有时需要一个近指针。如果需要的话,宏可以将整个代码库从一种切换到另一种。